38 lines
856 B
C
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
|