Files
redox-kernel/src/time.rs
2017-12-24 22:19:00 -07:00

18 lines
541 B
Rust

use spin::Mutex;
/// Kernel start time, measured in (seconds, nanoseconds) since Unix epoch
pub static START: Mutex<(u64, u64)> = Mutex::new((0, 0));
/// Kernel up time, measured in (seconds, nanoseconds) since `START_TIME`
pub static OFFSET: Mutex<(u64, u64)> = Mutex::new((0, 0));
pub fn monotonic() -> (u64, u64) {
*OFFSET.lock()
}
pub fn realtime() -> (u64, u64) {
let offset = monotonic();
let start = *START.lock();
let sum = start.1 + offset.1;
(start.0 + offset.0 + sum / 1_000_000_000, sum % 1_000_000_000)
}