//! Time and sleeping. use core::time::Duration; use crate::sys; /// Milliseconds since boot (monotonic). pub fn uptime_ms() -> u64 { unsafe { sys::syscall0(sys::SYS_GETMILLISECONDS) as u64 } } /// Sleep for at least `d`, rounded up to the 1 ms scheduler tick. pub fn sleep(d: Duration) { let ms = d.as_millis().min(u64::MAX as u128) as u64 + u64::from(d.subsec_nanos() % 1_000_000 != 0); if ms > 0 { unsafe { sys::syscall1(sys::SYS_SLEEP_MS, ms) }; } }