22 lines
648 B
Rust
22 lines
648 B
Rust
use spin::Mutex;
|
|
|
|
/// Kernel start time, measured in (seconds, microseconds) since Unix epoch
|
|
pub static START: Mutex<(u32, u32)> = Mutex::new((0, 0));
|
|
/// Kernel up time, measured in (seconds, microseconds) since `START_TIME`
|
|
pub static OFFSET: Mutex<(u32, u32)> = Mutex::new((0, 0));
|
|
|
|
pub fn monotonic() -> (u32, u32) {
|
|
*OFFSET.lock()
|
|
}
|
|
|
|
pub fn realtime() -> (u32, u32) {
|
|
let offset = monotonic();
|
|
let start = *START.lock();
|
|
let sum = start.1 + offset.1;
|
|
(start.0 + offset.0 + sum / 1_000_000, sum % 1_000_000)
|
|
}
|
|
|
|
pub fn uptime() {
|
|
let offset = self::OFFSET.lock();
|
|
println!("{}s", offset.0 + offset.1 / 1_000_000);
|
|
}
|