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_UPDATEflags 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_nsecfield ofTimespec. - Secs
- A type for the
tv_secfield ofTimespec. - c_char
- Equivalent to C’s
chartype.