38 lines
856 B
C

#ifndef TIMER_H
#define TIMER_H
#include "aliases.h"
// TODO (Abdelrahman): Not fully satisfied with this solution
#define PROFILER_SAMPLE(ID, TITLE, CODE) \
u64 ID##_start = read_cpu_timer(); \
CODE; \
u64 ID##_end = read_cpu_timer(); \
add_sample(TITLE, ID##_end - ID##_start);
#ifdef __cplusplus
extern "C" {
#endif
u64 get_os_frequency();
// Time in nanoseconds
u64 get_os_time(void);
// CPU timer using rdtsc
u64 read_cpu_timer(void);
// CPU frequency in hz/sec
u64 get_cpu_freq(u64 milliseconds);
void profile_start();
void profile_end();
void add_sample(const char *title, u64 duration);
#ifdef __cplusplus
}
#endif
#endif // !TIMER_H