package time import win32 "core:sys/windows" IS_SUPPORTED :: true now :: proc() -> Time { file_time: win32.FILETIME win32.GetSystemTimeAsFileTime(&file_time) ns := win32.FILETIME_as_unix_nanoseconds(file_time) return Time{_nsec=ns} } sleep :: proc(d: Duration) { win32.Sleep(win32.DWORD(d/Millisecond)) } _tick_now :: proc "contextless" () -> Tick { mul_div_u64 :: proc "contextless" (val, num, den: i64) -> i64 { q := val / den r := val % den return q * num + r * num / den } @thread_local qpc_frequency: win32.LARGE_INTEGER if qpc_frequency == 0 { win32.QueryPerformanceFrequency(&qpc_frequency) } now: win32.LARGE_INTEGER win32.QueryPerformanceCounter(&now) _nsec := mul_div_u64(i64(now), 1e9, i64(qpc_frequency)) return Tick{_nsec = _nsec} }