use std::io;
use std::mem;
use mach::{kern_return, mach_time};
mod boot_time;
mod uptime;
mod users;
pub use self::boot_time::*;
pub use self::uptime::*;
pub use self::users::*;
unsafe fn timebase_info() -> io::Result<mach_time::mach_timebase_info> {
let mut info = mem::MaybeUninit::<mach_time::mach_timebase_info>::uninit();
let res = mach_time::mach_timebase_info(info.as_mut_ptr());
if res == kern_return::KERN_SUCCESS {
Ok(info.assume_init())
} else {
Err(io::Error::last_os_error())
}
}
lazy_static::lazy_static! {
pub static ref TIME_BASE: f64 = {
let info = unsafe { timebase_info().expect("Unable to get mach timebase info") };
f64::from(info.numer) / f64::from(info.denom)
};
}