uring-sys2 0.12.0

liburing bindings
Documentation
use std::ffi::CString;
use std::io;
use std::mem::MaybeUninit;

use uring_sys2::{io_uring, io_uring_queue_init};

pub fn strerror(code: i32) -> String {
    unsafe {
        CString::from_raw(libc::strerror(code))
            .into_string()
            .unwrap()
    }
}

pub fn io_uring_init(entries: usize) -> io::Result<io_uring> {
    unsafe {
        let ring = MaybeUninit::uninit();
        let ret = io_uring_queue_init(entries as _, ring.as_ptr() as _, 0);
        if ret != 0 {
            Err(io::Error::from_raw_os_error(-ret))
        } else {
            Ok(ring.assume_init())
        }
    }
}