1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]
#![allow(non_upper_case_globals)]

include!(concat!(env!("OUT_DIR"), "/root/bindings.rs"));

#[cfg(test)]
mod test {
    use super::*;
    use std::mem::zeroed;
    use std::ptr::null_mut;

    const MAGIC_NUMBER: u64 = 1145141919810;

    #[test]
    fn test_version() {
        unsafe {
            assert!(io_uring_major_version() == 2);
            assert!(io_uring_minor_version() == 4);
        }
    }

    #[test]
    fn test_nop() {
        unsafe {
            let mut ring = zeroed();
            assert!(io_uring_queue_init(1, &mut ring, 0) >= 0);
            let sqe = io_uring_get_sqe(&mut ring);
            assert!(!sqe.is_null());
            io_uring_prep_nop(sqe);
            io_uring_sqe_set_data64(sqe, MAGIC_NUMBER);
            assert!(io_uring_submit(&mut ring) == 1);
            let mut cqe = null_mut();
            assert!(io_uring_wait_cqe(&mut ring, &mut cqe) >= 0);
            assert!(io_uring_cqe_get_data64(cqe) == MAGIC_NUMBER);
            io_uring_cqe_seen(&mut ring, cqe);
            io_uring_queue_exit(&mut ring);
        }
    }
}