io_ring 0.0.1

liburing wrapper
Documentation
#![cfg(target_pointer_width = "64")]

mod fun;

use core::{ffi::c_void, marker::PhantomData};

use rustix::{
    fd::RawFd,
    io_uring::{
        addr3_struct, addr_or_splice_off_in_union, buf_union, io_uring_params, io_uring_user_data,
        ioprio_union, len_union, off_or_addr2_union, op_flags_union,
        splice_fd_in_or_file_index_union, IoringCqeFlags, IoringOp, IoringSqeFlags, Timespec,
    },
};

#[allow(non_camel_case_types)]
#[repr(C)]
pub struct io_uring {
    _pad: [u64; 32],
    _marker: PhantomData<*mut ()>,
}

#[allow(non_camel_case_types)]
#[repr(C)]
#[derive(Clone, Copy)]
pub struct io_uring_sqe {
    pub opcode: IoringOp,
    pub flags: IoringSqeFlags,
    pub ioprio: ioprio_union,
    pub fd: RawFd,
    pub off_or_addr2: off_or_addr2_union,
    pub addr_or_splice_off_in: addr_or_splice_off_in_union,
    pub len: len_union,
    pub op_flags: op_flags_union,
    pub user_data: io_uring_user_data,
    pub buf: buf_union,
    pub personality: u16,
    pub splice_fd_in_or_file_index: splice_fd_in_or_file_index_union,
    pub addr3: addr3_struct,
}

#[allow(non_camel_case_types)]
#[repr(C)]
#[derive(Clone, Copy)]
pub struct io_uring_cqe {
    pub user_data: io_uring_user_data,
    pub res: i32,
    pub flags: IoringCqeFlags,
}

pub unsafe fn io_uring_queue_init_params(
    entries: u32,
    ring: *mut io_uring,
    p: *mut io_uring_params,
) -> i32 {
    fun::init(entries, ring as _, p as _)
}

pub unsafe fn io_uring_get_sqe(ring: *mut io_uring) -> *mut io_uring_sqe {
    fun::get_sqe(ring as _) as _
}

pub unsafe fn io_uring_submit_and_wait_timeout(
    ring: *mut io_uring,
    cqe_ptr: *mut *mut io_uring_cqe,
    wait_nr: u32,
    ts: *mut Timespec,
    sigmask: *mut c_void,
) -> i32 {
    fun::submit_and_wait(ring as _, cqe_ptr as _, wait_nr, ts as _, sigmask as _)
}

pub unsafe fn io_uring_cq_advance(ring: *mut io_uring, nr: u32) {
    fun::cq_advance(ring as _, nr)
}

pub unsafe fn io_uring_queue_exit(ring: *mut io_uring) {
    fun::exit(ring as _)
}