From d5883ec156756ddbfbd2c6ed00f1c25c17ad13f6 Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Wed, 19 May 2021 17:52:07 -0400 Subject: [PATCH] linux::io_uring: sqe_flags => flags Signed-off-by: Drew DeVault --- io_uring/sqe.ha | 44 ++++++++++++++++++++++---------------------- io_uring/uring.ha | 6 +++--- diff --git a/io_uring/sqe.ha b/io_uring/sqe.ha index a2d06451e4449cdbf9325bcdf5ff8d9330e89222..5d9c8071e1c563318c507ab63d2a4f4b3502818e 100644 --- a/io_uring/sqe.ha +++ b/io_uring/sqe.ha @@ -2,7 +2,7 @@ use endian; use rt; use types; -fn prep(sq: *sqe, op: op, flags: sqe_flags...) void = { +fn prep(sq: *sqe, op: op, flags: flags...) void = { rt::memset(sq, 0, size(sqe)); sq.opcode = op; for (let i = 0z; i < len(flags); i += 1) { @@ -17,7 +17,7 @@ fd: int, addr: nullable *void, length: uint, offs: u64, - flags: sqe_flags... + flags: flags... ) void = { prep(sqe, op, flags...); sqe.fd = fd; @@ -34,7 +34,7 @@ sqe.user_data = user_data: uintptr: u64; }; // Prepares a no-op "operation" for an [[sqe]]. -export fn nop(sqe: *sqe, flags: sqe_flags...) void = { +export fn nop(sqe: *sqe, flags: flags...) void = { prep(sqe, op::NOP, flags...); }; @@ -44,7 +44,7 @@ sqe: *sqe, fd: int, iov: []rt::iovec, offs: size, - flags: sqe_flags... + flags: flags... ) void = { preprw(sqe, op::READV, fd, iov: *[*]rt::iovec, len(iov): uint, offs, flags...); @@ -56,7 +56,7 @@ sqe: *sqe, fd: int, iov: []rt::iovec, offs: size, - flags: sqe_flags... + flags: flags... ) void = { preprw(sqe, op::WRITEV, fd, iov: *[*]rt::iovec, len(iov): uint, offs, flags...); @@ -68,7 +68,7 @@ sqe: *sqe, fd: int, buf: *void, count: size, - flags: sqe_flags... + flags: flags... ) void = { assert(count <= types::U32_MAX); preprw(sqe, op::READ, fd, buf, count: u32, 0, flags...); @@ -80,7 +80,7 @@ sqe: *sqe, fd: int, buf: *void, count: size, - flags: sqe_flags... + flags: flags... ) void = { assert(count <= types::U32_MAX); preprw(sqe, op::WRITE, fd, buf, count: u32, 0, flags...); @@ -95,7 +95,7 @@ fd: int, buf: *void, count: size, index: u16, - flags: sqe_flags... + flags: flags... ) void = { assert(count <= types::U32_MAX); preprw(sqe, op::READ_FIXED, fd, buf, count: u32, 0, flags...); @@ -111,7 +111,7 @@ fd: int, buf: *void, count: size, index: u16, - flags: sqe_flags... + flags: flags... ) void = { assert(count <= types::U32_MAX); preprw(sqe, op::WRITE_FIXED, fd, buf, count: u32, 0, flags...); @@ -121,12 +121,12 @@ // Prepares an fsync operation for an [[sqe]]. Note that operations are executed // in parallel and not are completed in submission order, so an fsync submitted // after a write may not cause the write to be accounted for by the fsync unless -// [[sqe_flags::IO_LINK]] is used. +// [[flags::IO_LINK]] is used. export fn fsync( sqe: *sqe, fd: int, fsync_flags: fsync_flags, - flags: sqe_flags... + flags: flags... ) void = { preprw(sqe, op::FSYNC, fd, null, 0, 0, flags...); sqe.fsync_flags = fsync_flags; @@ -141,7 +141,7 @@ export fn poll_add( sqe: *sqe, fd: int, poll_mask: uint, - flags: sqe_flags... + flags: flags... ) void = { preprw(sqe, op::POLL_ADD, fd, null, 0, 0, flags...); assert(endian::host == &endian::little); // TODO? @@ -150,7 +150,7 @@ }; // Removes an existing poll request by matching the SQE's user_data field. See // [[setuser]]. -export fn poll_remove(sqe: *sqe, user_data: *void, flags: sqe_flags...) void = { +export fn poll_remove(sqe: *sqe, user_data: *void, flags: flags...) void = { preprw(sqe, op::POLL_REMOVE, -1, null, 0, 0, flags...); set_user(sqe, user_data); }; @@ -162,7 +162,7 @@ sqe: *sqe, fd: int, msghdr: *rt::msghdr, sendmsg_flags: int, - flags: sqe_flags... + flags: flags... ) void = { preprw(sqe, op::SENDMSG, fd, msghdr, 0, 0, flags...); sqe.msg_flags = sendmsg_flags; @@ -175,7 +175,7 @@ sqe: *sqe, fd: int, msghdr: *rt::msghdr, recvmsg_flags: int, - flags: sqe_flags... + flags: flags... ) void = { preprw(sqe, op::RECVMSG, fd, msghdr, 0, 0, flags...); sqe.msg_flags = recvmsg_flags; @@ -189,7 +189,7 @@ fd: int, buf: *void, count: size, send_flags: int, - flags: sqe_flags... + flags: flags... ) void = { assert(count <= types::U32_MAX); preprw(sqe, op::SEND, fd, buf, count: u32, 0, flags...); @@ -204,7 +204,7 @@ fd: int, buf: *void, count: size, recv_flags: int, - flags: sqe_flags... + flags: flags... ) void = { assert(count <= types::U32_MAX); preprw(sqe, op::RECV, fd, buf, count: u32, 0, flags...); @@ -221,7 +221,7 @@ sqe: *sqe, ts: *rt::timespec, events: uint, to_flags: timeout_flags, - flags: sqe_flags... + flags: flags... ) void = { preprw(sqe, op::TIMEOUT, 0, ts, 1, events, flags...); sqe.timeout_flags = to_flags; @@ -233,7 +233,7 @@ export fn timeout_remove( sqe: *sqe, user_data: *void, to_flags: timeout_flags, - flags: sqe_flags... + flags: flags... ) void = { preprw(sqe, op::TIMEOUT_REMOVE, 0, user_data, 0, 0, flags...); sqe.timeout_flags = to_flags; @@ -247,7 +247,7 @@ user_data: *void, ts: *rt::timespec, events: uint, to_flags: timeout_flags, - flags: sqe_flags... + flags: flags... ) void = { preprw(sqe, op::TIMEOUT_REMOVE, 0, user_data, 0, events, flags...); sqe.timeout_flags = to_flags | timeout_flags::UPDATE; @@ -261,7 +261,7 @@ fd: int, addr: nullable *rt::sockaddr, addrlen: nullable *uint, aflags: uint, - flags: sqe_flags... + flags: flags... ) void = { preprw(sqe, op::ACCEPT, fd, addr, 0, 0, flags...); sqe.accept_flags = aflags; @@ -269,6 +269,6 @@ sqe.addr2 = addrlen; }; // Prepares an [[sqe]] operation which closes a file descriptor. -export fn close(sqe: *sqe, fd: int, flags: sqe_flags...) void = { +export fn close(sqe: *sqe, fd: int, flags: flags...) void = { preprw(sqe, op::CLOSE, fd, null, 0, 0, flags...); }; diff --git a/io_uring/uring.ha b/io_uring/uring.ha index fec9360cd4afb006f9670b13d4c09ef926d02584..80c8a225078d05bd477de6b6d8c2b6c4ee1fc6ec 100644 --- a/io_uring/uring.ha +++ b/io_uring/uring.ha @@ -55,7 +55,7 @@ TEE, }; // Flags for an [[sqe]]. -export type sqe_flags = enum u8 { +export type flags = enum u8 { // Use fixed fileset FIXED_FILE = 1 << 0, // Issue after inflight IO @@ -99,7 +99,7 @@ // A submission queue entry. export type sqe = struct { opcode: op, - flags: sqe_flags, + flags: flags, ioprio: u16, fd: i32, union { @@ -289,7 +289,7 @@ opcode: resop, union { register_op: regop, sqe_op: op, - sqe_flags: sqe_flags, + flags: flags, }, resv: u8, resv2: [3]u32, -- 2.48.1