use crate::platform::TimeSpec;
use sc::syscall;
#[inline]
pub fn nanosleep(try_sleep: &TimeSpec, rem: Option<*mut TimeSpec>) -> crate::Result<()> {
let res = unsafe {
syscall!(
NANOSLEEP,
core::ptr::from_ref::<TimeSpec>(try_sleep),
rem.map_or(core::ptr::null_mut(), |ts| ts)
)
};
bail_on_below_zero!(res, "`NANOSLEEP` syscall failed");
Ok(())
}
#[inline]
pub fn nanosleep_same_ptr(try_sleep: &mut TimeSpec) -> crate::Result<()> {
let res = unsafe {
syscall!(
NANOSLEEP,
core::ptr::from_mut::<TimeSpec>(try_sleep),
core::ptr::from_mut::<TimeSpec>(try_sleep)
)
};
bail_on_below_zero!(res, "`NANOSLEEP` syscall failed");
Ok(())
}