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}