#![warn(missing_docs)]
#![cfg(target_os = "linux")]
pub mod sys;
mod error;
pub mod ops;
mod queue;
mod uring;
#[cfg(any(feature = "async-tokio", feature = "async-async-std"))]
pub mod async_io;
pub use error::{Error, Result};
pub use queue::{CompletionQueue, Cqe, SubmissionQueue};
pub use uring::IoUring;
pub use sys::{io_uring_cqe, io_uring_sqe};
pub mod flags {
use bitflags::bitflags;
bitflags! {
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct SetupFlags: u32 {
const IOPOLL = crate::sys::IORING_SETUP_IOPOLL;
const SQPOLL = crate::sys::IORING_SETUP_SQPOLL;
const SQ_AFF = crate::sys::IORING_SETUP_SQ_AFF;
const CQSIZE = crate::sys::IORING_SETUP_CQSIZE;
const CLAMP = crate::sys::IORING_SETUP_CLAMP;
const ATTACH_WQ = crate::sys::IORING_SETUP_ATTACH_WQ;
const R_DISABLED = crate::sys::IORING_SETUP_R_DISABLED;
const SUBMIT_ALL = crate::sys::IORING_SETUP_SUBMIT_ALL;
const COOP_TASKRUN = crate::sys::IORING_SETUP_COOP_TASKRUN;
const TASKRUN_FLAG = crate::sys::IORING_SETUP_TASKRUN_FLAG;
const SQE128 = crate::sys::IORING_SETUP_SQE128;
const CQE32 = crate::sys::IORING_SETUP_CQE32;
const SINGLE_ISSUER = crate::sys::IORING_SETUP_SINGLE_ISSUER;
const DEFER_TASKRUN = crate::sys::IORING_SETUP_DEFER_TASKRUN;
}
}
bitflags! {
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct SqeFlags: u8 {
const FIXED_FILE = 1 << 0;
const IO_DRAIN = 1 << 1;
const IO_LINK = 1 << 2;
const IO_HARDLINK = 1 << 3;
const ASYNC = 1 << 4;
const BUFFER_SELECT = 1 << 5;
const CQE_SKIP_SUCCESS = 1 << 6;
}
}
}
pub mod opcode {
pub use crate::sys::io_uring_op;
}