19 lines
482 B
Rust
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) };
|
|
}
|
|
}
|