#include #include #include #include "types.h" #include "timer.h" void timer_init(Timer *timer, const unsigned int target) { timer->counter = 0; timer->target = target; clock_gettime(CLOCK_REALTIME, &timer->start); } bool timer_inc(Timer *timer) { timer->counter += 1; return timer->counter == UINT_MAX || timer->counter >= timer->target; } double timer_reset(Timer *timer) { struct timespec stop; double secs; double per_secs; if (clock_gettime(CLOCK_REALTIME, &stop) != 0) { return 0.0; } secs = (double)(stop.tv_sec - timer->start.tv_sec) + (double)(stop.tv_nsec - timer->start.tv_nsec) / 1e9; per_secs = (double)timer->counter / secs; timer->start = stop; timer->counter = 0; return per_secs; }