uapi 0.2.13

Wrappers for OS APIs on UNIX-like platform
Documentation
use std::mem;
use uapi::*;

#[test]
fn epoll() {
    let e = epoll_create1(0).unwrap();
    assert_ne!(fcntl_getfd(*e).unwrap() & c::FD_CLOEXEC, c::FD_CLOEXEC);

    let e = epoll_create1(c::EPOLL_CLOEXEC).unwrap();
    assert_eq!(fcntl_getfd(*e).unwrap() & c::FD_CLOEXEC, c::FD_CLOEXEC);

    let (r, w) = pipe().unwrap();

    epoll_ctl(
        *e,
        c::EPOLL_CTL_ADD,
        *r,
        Some(&c::epoll_event {
            events: c::EPOLLIN as _,
            u64: 3,
        }),
    )
    .unwrap();

    let mut events = unsafe { [mem::zeroed()] };

    assert_eq!(epoll_wait(*e, &mut events, 0).unwrap(), 0);

    write(*w, &[0]).unwrap();

    assert_eq!(epoll_wait(*e, &mut events, 1000).unwrap(), 1);

    let events = events[0].events;
    assert_eq!(events, c::EPOLLIN as _);
}