uapi 0.2.10

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

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

    {
        let e = timerfd_create(c::CLOCK_MONOTONIC, c::TFD_CLOEXEC).unwrap();
        assert_eq!(fcntl_getfd(*e).unwrap() & c::FD_CLOEXEC, c::FD_CLOEXEC);

        let time = c::itimerspec {
            it_interval: c::timespec {
                tv_sec: 1000,
                tv_nsec: 2000,
            },
            it_value: c::timespec {
                tv_sec: 3000,
                tv_nsec: 4000,
            },
        };
        let time2 = c::itimerspec {
            it_interval: c::timespec {
                tv_sec: 5000,
                tv_nsec: 6000,
            },
            it_value: c::timespec {
                tv_sec: 7000,
                tv_nsec: 8000,
            },
        };

        timerfd_settime(e.raw(), 0, &time).unwrap();
        let old = timerfd_settime(e.raw(), 0, &time2).unwrap();
        assert_eq!(time.it_interval.tv_sec, old.it_interval.tv_sec);
        assert_eq!(time.it_interval.tv_nsec, old.it_interval.tv_nsec);

        let new = timerfd_gettime(e.raw()).unwrap();
        assert_eq!(time2.it_interval.tv_sec, new.it_interval.tv_sec);
        assert_eq!(time2.it_interval.tv_nsec, new.it_interval.tv_nsec);
    }
}