jit_allocator/
os.rs

1pub fn get_tick_count() -> u32 {
2    cfgenius::cond! {
3        if cfg(windows) {
4            extern "C" {
5                fn GetTickCount() -> u32;
6            }
7
8            unsafe { GetTickCount() }
9        } else {
10            use core::mem::MaybeUninit;
11            let mut ts: MaybeUninit<libc::timespec> = MaybeUninit::zeroed();
12
13            unsafe {
14                if libc::clock_gettime(libc::CLOCK_MONOTONIC, ts.as_mut_ptr()) != 0 {
15                    return 0;
16                }
17                let ts = ts.assume_init();
18                let t = ((ts.tv_sec as u64) * 1000) + (ts.tv_nsec as u64 / 1000000);
19                (t & 0xFFFFFFFF) as u32
20            }
21        }
22    }
23}