/// High resolution sleep.
///
/// # Examples
///
/// ```
/// let t = nc::timespec_t {
/// tv_sec: 1,
/// tv_nsec: 0,
/// };
/// let ret = unsafe { nc::nanosleep(&t, None) };
/// assert!(ret.is_ok());
/// ```
pub unsafe fn nanosleep(req: ×pec_t, rem: Option<&mut timespec_t>) -> Result<(), Errno> {
let req_ptr = core::ptr::from_ref(req) as usize;
let rem_ptr = rem.map_or(core::ptr::null_mut::<timespec_t>() as usize, |rem| {
core::ptr::from_mut(rem) as usize
});
unsafe { syscall2(SYS_NANOSLEEP, req_ptr, rem_ptr).map(drop) }
}