Files
MontaukOS/programs/rust/montauk-rt/src/time.rs
T

19 lines
482 B
Rust

//! 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) };
}
}