uapi 0.1.3

Wrappers for OS APIs on UNIX-like platform
Documentation
#[test]
#[cfg(target_os = "linux")]
fn signalfd_() {
    use uapi::*;

    let sfd = signalfd_new(&empty_sig_set().unwrap(), 0).unwrap();
    assert_ne!(fcntl_getfd(*sfd).unwrap() & c::FD_CLOEXEC, c::FD_CLOEXEC);

    let sfd = signalfd_new(&empty_sig_set().unwrap(), c::SFD_CLOEXEC | c::SFD_NONBLOCK)
        .unwrap();
    assert_eq!(fcntl_getfd(*sfd).unwrap() & c::FD_CLOEXEC, c::FD_CLOEXEC);

    let mut set = empty_sig_set().unwrap();
    sigaddset(&mut set, c::SIGUSR1).unwrap();

    pthread_sigmask(c::SIG_BLOCK, Some(&set), None).unwrap();

    let mut buf = [pod_zeroed(); 5];
    assert_eq!(
        signalfd_read(*sfd, &mut buf[..]).err().unwrap(),
        Errno(c::EAGAIN)
    );

    raise(c::SIGUSR1).unwrap();

    assert_eq!(
        signalfd_read(*sfd, &mut buf[..]).err().unwrap(),
        Errno(c::EAGAIN)
    );

    signalfd_mod(*sfd, &set).unwrap();

    let res = signalfd_read(*sfd, &mut buf[..]).unwrap();
    assert_eq!(res.len(), 1);
    assert_eq!(res[0].ssi_signo, c::SIGUSR1 as _);
}