Available on crate feature
io_uring
only.Expand description
Linux io_uring.
This API is very low-level. The main adaptations it makes from the raw
Linux io_uring API are the use of appropriately-sized bitflags
, enum
,
Result
, OwnedFd
, AsFd
, RawFd
, and *mut c_void
in place of plain
integers.
For a higher-level API built on top of this, see the rustix-uring crate.
§Safety
io_uring operates on raw pointers and raw file descriptors. Rustix does not attempt to provide a safe API for these, because the abstraction level is too low for this to be practical. Safety should be introduced in higher-level abstraction layers.
§References
Re-exports§
pub use crate::event::epoll::Event as EpollEvent;
pub use crate::event::epoll::EventData as EpollEventData;
pub use crate::event::epoll::EventFlags as EpollEventFlags;
pub use crate::fs::Advice;
pub use crate::fs::AtFlags;
pub use crate::fs::Mode;
pub use crate::fs::OFlags;
pub use crate::fs::RenameFlags;
pub use crate::fs::ResolveFlags;
pub use crate::fs::Statx;
pub use crate::fs::StatxFlags;
pub use crate::fs::XattrFlags;
pub use crate::io::ReadWriteFlags;
pub use crate::net::addr::SocketAddrLen;
pub use crate::net::addr::SocketAddrOpaque;
pub use crate::net::addr::SocketAddrStorage;
pub use crate::net::RecvFlags;
pub use crate::net::SendFlags;
pub use crate::net::SocketFlags;
pub use crate::thread::futex::Wait as FutexWait;
pub use crate::thread::futex::WaitFlags as FutexWaitFlags;
pub use crate::thread::futex::WaitPtr as FutexWaitPtr;
pub use crate::thread::futex::WaitvFlags as FutexWaitvFlags;
Structs§
- Ioring
Accept Flags - accept flags (
sqe.ioprio
) - Ioring
Async Cancel Flags IORING_ASYNC_CANCEL_*
flags for use withio_uring_sqe
.- Ioring
CqFlags IORING_CQ_*
flags.- Ioring
CqeFlags IORING_CQE_F_*
flags for use withio_uring_cqe
.- Ioring
Enter Flags IORING_ENTER_*
flags for use withio_uring_enter
.- Ioring
Feature Flags IORING_FEAT_*
flags for use withio_uring_params
.- Ioring
Fixed FdFlags IORING_FIXED_FD_*
flags for use withio_uring_sqe
.- Ioring
Fsync Flags IORING_FSYNC_*
flags for use withio_uring_sqe
.- Ioring
Msgring Flags IORING_MSG_RING_*
flags for use withio_uring_sqe
.- Ioring
OpFlags IO_URING_OP_*
flags for use withio_uring_probe_op
.- Ioring
Poll Flags IORING_POLL_*
flags.- Ioring
Recv Flags - recv/recvmsg flags (
sqe.ioprio
) - Ioring
Register Flags IORING_REGISTER_*
flags for use withio_uring_register_with
.- Ioring
Rsrc Flags IORING_RSRC_*
flags for use withio_uring_rsrc_register
.- Ioring
Send Flags - send/sendmsg flags (
sqe.ioprio
) - Ioring
Setup Flags IORING_SETUP_*
flags for use withio_uring_params
.- Ioring
SqFlags IORING_SQ_*
flags.- Ioring
SqeFlags IOSQE_*
flags for use withio_uring_sqe
.- Ioring
Timeout Flags IORING_TIMEOUT_*
andIORING_LINK_TIMEOUT_UPDATE
flags for use withio_uring_sqe
.- Ioring
Uring CmdFlags IORING_URING_CMD_*
flags for use withio_uring_sqe
.- Kernel
SigSet kernel_sigset_t
—A set of signal numbers, as used by some syscalls.- MsgHdr
msghdr
- Recvmsg
OutFlags - recvmsg out flags
- Signal
- A signal number for use with
kill_process
,kill_process_group
, andkill_current_process_group
. - Splice
Flags SPLICE_F_*
flags for use withio_uring_sqe
.- Timespec
struct timespec
—A quantity of time in seconds plus nanoseconds.- addr3_
struct - addr_
len_ struct - buf_
ring_ bufs_ struct - buf_
ring_ tail_ struct - cmd_
op_ struct - io_
cqring_ offsets - io_
sqring_ offsets - io_
uring_ buf - io_
uring_ buf_ reg - io_
uring_ buf_ ring - io_
uring_ clone_ buffers - io_
uring_ cqe - An io_uring Completion Queue Entry.
- io_
uring_ files_ update - io_
uring_ getevents_ arg - io_
uring_ napi - io_
uring_ params - io_
uring_ probe - io_
uring_ probe_ op - io_
uring_ ptr - A pointer in the io_uring API.
- io_
uring_ recvmsg_ out - io_
uring_ reg_ wait - io_
uring_ restriction - io_
uring_ rsrc_ register - io_
uring_ rsrc_ update - io_
uring_ rsrc_ update2 - io_
uring_ sqe - An io_uring Submission Queue Entry.
- io_
uring_ sync_ cancel_ reg - iovec
- open_
how - tail_
or_ bufs_ struct
Enums§
- ClockId
CLOCK_*
constants for use withclock_gettime
.- Ioring
Msgring Cmds IORING_MSG_*
constants which represent commands for use withIoringOp::MsgRing
, (seq.addr
)- Ioring
Op IORING_OP_*
constants for use withio_uring_sqe
.- Ioring
Register Op IORING_REGISTER_*
andIORING_UNREGISTER_*
constants for use withio_uring_register
.- Ioring
Restriction Op IORING_RESTRICTION_*
constants for use withio_uring_restriction
.
Constants§
- IORING_
CQE_ BUFFER_ SHIFT - IORING_
FILE_ INDEX_ ALLOC - IORING_
NOTIF_ USAGE_ ZC_ COPIED IORING_NOTIF_USAGE_ZC_COPIED
(since Linux 6.2)- IORING_
OFF_ CQ_ RING - IORING_
OFF_ SQES - IORING_
OFF_ SQ_ RING - IORING_
REGISTER_ FILES_ SKIP IORING_REGISTER_FILES_SKIP
Functions§
- io_
uring_ ⚠enter io_uring_enter(fd, to_submit, min_complete, flags, 0, 0)
—Initiate and/or complete asynchronous I/O.- io_
uring_ ⚠enter_ arg io_uring_enter2(fd, to_submit, min_complete, flags, arg, sizeof(*arg))
— Initiate and/or complete asynchronous I/O, with a signal mask and a timeout.- io_
uring_ ⚠enter_ sigmask io_uring_enter(fd, to_submit, min_complete, flags, sigmask, sizeof(*sigmask))
— Initiate and/or complete asynchronous I/O, with a signal mask.- io_
uring_ ⚠register io_uring_register(fd, opcode, arg, nr_args)
—Register files or user buffers for asynchronous I/O.- io_
uring_ ⚠register_ with io_uring_register_with(fd, opcode, flags, arg, nr_args)
—Register files or user buffers for asynchronous I/O.- io_
uring_ ⚠setup io_uring_setup(entries, params)
—Setup a context for performing asynchronous I/O.
Type Aliases§
- Nsecs
- A type for the
tv_nsec
field ofTimespec
. - Secs
- A type for the
tv_sec
field ofTimespec
. - c_char
- Equivalent to C’s
char
type.