1
Fork 0

Remove mach dependency

This commit is contained in:
gnzlbg 2019-06-21 17:35:48 +02:00
parent 0b9d0b0ccb
commit 74dc2b6f6f
4 changed files with 23 additions and 13 deletions

View file

@ -137,9 +137,21 @@ mod inner {
t: Timespec::zero(),
};
#[repr(C)]
#[derive(Copy, Clone)]
struct mach_timebase_info {
numer: u32,
denom: u32,
}
type mach_timebase_info_t = *mut mach_timebase_info;
type kern_return_t = libc::c_int;
impl Instant {
pub fn now() -> Instant {
Instant { t: unsafe { mach::mach_time::mach_absolute_time() } }
extern "C" {
fn mach_absolute_time() -> u64;
}
Instant { t: unsafe { mach_absolute_time() } }
}
pub const fn zero() -> Instant {
@ -230,9 +242,8 @@ mod inner {
Some(mul_div_u64(nanos, info.denom as u64, info.numer as u64))
}
fn info() -> mach::mach_time::mach_timebase_info {
static mut INFO: mach::mach_time::mach_timebase_info
= mach::mach_time::mach_timebase_info {
fn info() -> mach_timebase_info {
static mut INFO: mach_timebase_info = mach_timebase_info {
numer: 0,
denom: 0,
};
@ -246,7 +257,12 @@ mod inner {
// ... otherwise learn for ourselves ...
let mut info = mem::zeroed();
mach::mach_time::mach_timebase_info(&mut info);
extern "C" {
fn mach_timebase_info(info: mach_timebase_info_t)
-> kern_return_t;
}
mach_timebase_info(&mut info);
// ... and attempt to be the one thread that stores it globally for
// all other threads