Files
djhackersdev_bemanitools/src/main/util/time.c
T

54 lines
1.1 KiB
C

#include <windows.h>
#include "util/log.h"
#include "util/time.h"
static uint64_t counter_freq_ns;
static uint64_t counter_freq_us;
static uint64_t counter_freq_ms;
static void time_init_freq()
{
LARGE_INTEGER ticks_per_sec;
QueryPerformanceFrequency(&ticks_per_sec);
counter_freq_ms = ticks_per_sec.QuadPart / 1000;
counter_freq_us = counter_freq_ms / 1000;
counter_freq_ns = counter_freq_us / 1000;
}
uint64_t time_get_counter(void)
{
LARGE_INTEGER time;
log_assert(QueryPerformanceCounter(&time) == TRUE);
return (uint64_t) time.QuadPart;
}
uint64_t time_get_elapsed_ns(uint64_t counter_delta)
{
if (counter_freq_ns == 0) {
time_init_freq();
}
return counter_delta / counter_freq_ns;
}
uint64_t time_get_elapsed_us(uint64_t counter_delta)
{
if (counter_freq_ns == 0) {
time_init_freq();
}
return counter_delta / counter_freq_us;
}
uint32_t time_get_elapsed_ms(uint64_t counter_delta)
{
if (counter_freq_ns == 0) {
time_init_freq();
}
return counter_delta / counter_freq_ms;
}