54 lines
988 B
C
54 lines
988 B
C
#ifndef TIMER_H
|
|
#define TIMER_H
|
|
|
|
#include "aliases.h"
|
|
|
|
#ifndef MAX_PROFILE_SAMPLES
|
|
#define MAX_PROFILE_SAMPLES 1024
|
|
#endif // !MAX_PROFILE_SAMPLES
|
|
|
|
#ifdef ENABLE_PROFILING
|
|
#define PROFILE_START profile_start()
|
|
#define PROFILE_END profile_end()
|
|
#define SAMPLE_START(ID, TITLE) profiler_sample_t ID = sample_start(TITLE)
|
|
#define SAMPLE_END(ID) sample_end(&ID)
|
|
#else
|
|
#define PROFILE_START
|
|
#define PROFILE_END
|
|
#define SAMPLE_START(ID, TITLE)
|
|
#define SAMPLE_END(ID)
|
|
#endif // ENABLE_PROFILING
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef struct {
|
|
const char *title;
|
|
u64 start;
|
|
u64 end;
|
|
} profiler_sample_t;
|
|
|
|
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();
|
|
|
|
profiler_sample_t sample_start(const char *title);
|
|
void sample_end(profiler_sample_t *sample);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // !TIMER_H
|