rustix 0.35.7

Safe Rust bindings to POSIX/Unix/Linux/Winsock2-like syscalls
Documentation
#[cfg(not(any(
    target_os = "emscripten",
    target_os = "freebsd",
    target_os = "ios",
    target_os = "macos",
    target_os = "openbsd",
    target_os = "redox",
    target_os = "wasi",
)))]
use rustix::thread::{clock_nanosleep_absolute, clock_nanosleep_relative, ClockId};
#[cfg(not(target_os = "redox"))]
use {
    rustix::io,
    rustix::thread::{nanosleep, NanosleepRelativeResult, Timespec},
};

#[cfg(not(target_os = "redox"))]
#[test]
fn test_invalid_nanosleep() {
    match nanosleep(&Timespec {
        tv_sec: 0,
        tv_nsec: 1_000_000_000,
    }) {
        NanosleepRelativeResult::Err(io::Errno::INVAL) => (),
        otherwise => panic!("unexpected resut: {:?}", otherwise),
    }
    match nanosleep(&Timespec {
        tv_sec: 0,
        tv_nsec: !0,
    }) {
        NanosleepRelativeResult::Err(io::Errno::INVAL) => (),
        otherwise => panic!("unexpected resut: {:?}", otherwise),
    }
    match nanosleep(&Timespec {
        tv_sec: !0,
        tv_nsec: 1_000_000_000,
    }) {
        NanosleepRelativeResult::Err(io::Errno::INVAL) => (),
        otherwise => panic!("unexpected resut: {:?}", otherwise),
    }
    match nanosleep(&Timespec {
        tv_sec: !0,
        tv_nsec: !0,
    }) {
        NanosleepRelativeResult::Err(io::Errno::INVAL) => (),
        otherwise => panic!("unexpected resut: {:?}", otherwise),
    }
}

#[cfg(not(any(
    target_os = "emscripten",
    target_os = "freebsd",
    target_os = "ios",
    target_os = "macos",
    target_os = "openbsd",
    target_os = "redox",
    target_os = "wasi",
)))]
#[test]
fn test_invalid_nanosleep_absolute() {
    match clock_nanosleep_absolute(
        ClockId::Monotonic,
        &Timespec {
            tv_sec: 0,
            tv_nsec: 1000000000,
        },
    ) {
        Err(io::Errno::INVAL) => (),
        otherwise => panic!("unexpected resut: {:?}", otherwise),
    }
    match clock_nanosleep_absolute(
        ClockId::Monotonic,
        &Timespec {
            tv_sec: 0,
            tv_nsec: !0,
        },
    ) {
        Err(io::Errno::INVAL) => (),
        otherwise => panic!("unexpected resut: {:?}", otherwise),
    }
    match clock_nanosleep_absolute(
        ClockId::Monotonic,
        &Timespec {
            tv_sec: !0,
            tv_nsec: 1_000_000_000,
        },
    ) {
        Err(io::Errno::INVAL) => (),
        otherwise => panic!("unexpected resut: {:?}", otherwise),
    }
    match clock_nanosleep_absolute(
        ClockId::Monotonic,
        &Timespec {
            tv_sec: !0,
            tv_nsec: !0,
        },
    ) {
        Err(io::Errno::INVAL) => (),
        otherwise => panic!("unexpected resut: {:?}", otherwise),
    }
}

#[cfg(not(any(
    target_os = "emscripten",
    target_os = "freebsd",
    target_os = "ios",
    target_os = "macos",
    target_os = "openbsd",
    target_os = "redox",
    target_os = "wasi",
)))]
#[test]
fn test_invalid_nanosleep_relative() {
    match clock_nanosleep_relative(
        ClockId::Monotonic,
        &Timespec {
            tv_sec: 0,
            tv_nsec: 1_000_000_000,
        },
    ) {
        NanosleepRelativeResult::Err(io::Errno::INVAL) => (),
        otherwise => panic!("unexpected resut: {:?}", otherwise),
    }
    match clock_nanosleep_relative(
        ClockId::Monotonic,
        &Timespec {
            tv_sec: 0,
            tv_nsec: !0,
        },
    ) {
        NanosleepRelativeResult::Err(io::Errno::INVAL) => (),
        otherwise => panic!("unexpected resut: {:?}", otherwise),
    }
    match clock_nanosleep_relative(
        ClockId::Monotonic,
        &Timespec {
            tv_sec: !0,
            tv_nsec: 1_000_000_000,
        },
    ) {
        NanosleepRelativeResult::Err(io::Errno::INVAL) => (),
        otherwise => panic!("unexpected resut: {:?}", otherwise),
    }
    match clock_nanosleep_relative(
        ClockId::Monotonic,
        &Timespec {
            tv_sec: !0,
            tv_nsec: !0,
        },
    ) {
        NanosleepRelativeResult::Err(io::Errno::INVAL) => (),
        otherwise => panic!("unexpected resut: {:?}", otherwise),
    }
}

#[cfg(not(target_os = "redox"))]
#[test]
fn test_zero_nanosleep() {
    match nanosleep(&Timespec {
        tv_sec: 0,
        tv_nsec: 0,
    }) {
        NanosleepRelativeResult::Ok => (),
        otherwise => panic!("unexpected resut: {:?}", otherwise),
    }
}

#[cfg(not(any(
    target_os = "emscripten",
    target_os = "freebsd",
    target_os = "ios",
    target_os = "macos",
    target_os = "openbsd",
    target_os = "redox",
    target_os = "wasi",
)))]
#[test]
fn test_zero_nanosleep_absolute() {
    match clock_nanosleep_absolute(
        ClockId::Monotonic,
        &Timespec {
            tv_sec: 0,
            tv_nsec: 0,
        },
    ) {
        Ok(()) => (),
        otherwise => panic!("unexpected resut: {:?}", otherwise),
    }
}

#[cfg(not(any(
    target_os = "emscripten",
    target_os = "freebsd",
    target_os = "ios",
    target_os = "macos",
    target_os = "openbsd",
    target_os = "redox",
    target_os = "wasi",
)))]
#[test]
fn test_zero_nanosleep_relative() {
    match clock_nanosleep_relative(
        ClockId::Monotonic,
        &Timespec {
            tv_sec: 0,
            tv_nsec: 0,
        },
    ) {
        NanosleepRelativeResult::Ok => (),
        otherwise => panic!("unexpected resut: {:?}", otherwise),
    }
}