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
 |