/// High resolution sleep with a specific clock.
///
/// # Example
///
/// ```
/// let t = nc::timespec_t {
/// tv_sec: 1,
/// tv_nsec: 0,
/// };
/// let mut rem = nc::timespec_t::default();
/// let ret = unsafe { nc::clock_nanosleep(nc::CLOCK_MONOTONIC, 0, &t, &mut rem) };
/// assert!(ret.is_ok());
/// ```
pub unsafe fn clock_nanosleep(
which_clock: clockid_t,
flags: i32,
rqtp: ×pec_t,
rmtp: &mut timespec_t,
) -> Result<(), Errno> {
let which_clock = which_clock as usize;
let flags = flags as usize;
let rqtp_ptr = rqtp as *const timespec_t as usize;
let rmtp_ptr = rmtp as *mut timespec_t as usize;
syscall4(SYS_CLOCK_NANOSLEEP, which_clock, flags, rqtp_ptr, rmtp_ptr).map(drop)
}