From 1961b4b237083f4cfac9ca6b249c1d6cb665d149 Mon Sep 17 00:00:00 2001 From: Paul Oliver Date: Tue, 14 Jul 2026 17:29:02 +0200 Subject: Initial (refactor) --- core/timer.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 core/timer.c (limited to 'core/timer.c') diff --git a/core/timer.c b/core/timer.c new file mode 100644 index 0000000..a634a9b --- /dev/null +++ b/core/timer.c @@ -0,0 +1,43 @@ +// file : core/timer.c +// project : Salis-VM +// author : Paul Oliver + +#include +#include +#include +#include +#include + +#include "arch_spec.h" +#include "arch_inst.h" +#include "compress.h" +#include "salis.h" +#include "timer.h" + +void timer_reset(struct Timer *timer) { + assert(timer); + clock_gettime(CLOCK_MONOTONIC_COARSE, &timer->time_start); + timer->time_delta = 0.f; +} + +void timer_measure(struct Timer *timer) { + assert(timer); + struct timespec time_end; + clock_gettime(CLOCK_MONOTONIC_COARSE, &time_end); + timer->time_delta = (float)(time_end.tv_sec - timer->time_start.tv_sec); + timer->time_delta += (float)(time_end.tv_nsec - timer->time_start.tv_nsec) / 1000000000.f; +} + +void timer_sps_reset(struct TimerSPS *timer_sps) { + assert(timer_sps); + timer_reset(&timer_sps->timer); + timer_sps->step_start = g_step; + timer_sps->steps_per_sec = 0.f; +} + +void timer_sps_measure(struct TimerSPS *timer_sps) { + assert(timer_sps); + timer_measure(&timer_sps->timer); + float step_delta = (float)(g_step - timer_sps->step_start); + timer_sps->steps_per_sec = step_delta / timer_sps->timer.time_delta; +} -- cgit v1.2.1