Wrap page fault count functions in os-agnostic function
This commit is contained in:
		@@ -32,7 +32,7 @@ static u64 ReadOSTimer(void) {
 | 
			
		||||
  return Value.QuadPart;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static u64 ReadOSPageFaultCount(void) {
 | 
			
		||||
static u64 ReadWindowsPageFaultCount(void) {
 | 
			
		||||
  PROCESS_MEMORY_COUNTERS_EX MemoryCounters = {0};
 | 
			
		||||
  MemoryCounters.cb = sizeof(MemoryCounters);
 | 
			
		||||
  GetProcessMemoryInfo(GlobalMetrics.ProcessHandle,
 | 
			
		||||
@@ -60,7 +60,7 @@ static void InitializeOSMetrics(void) {
 | 
			
		||||
 | 
			
		||||
typedef struct rusage rusage_t;
 | 
			
		||||
 | 
			
		||||
u64 page_fault_count() {
 | 
			
		||||
u64 nix_page_fault_count() {
 | 
			
		||||
  rusage_t usage;
 | 
			
		||||
 | 
			
		||||
  getrusage(RUSAGE_SELF, &usage);
 | 
			
		||||
@@ -70,6 +70,14 @@ u64 page_fault_count() {
 | 
			
		||||
 | 
			
		||||
#endif // _WIN32
 | 
			
		||||
 | 
			
		||||
u64 page_fault_count() {
 | 
			
		||||
#if _WIN32
 | 
			
		||||
  return ReadWindowsPageFaultCount();
 | 
			
		||||
#else
 | 
			
		||||
  return nix_page_fault_count();
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int main(int argc, char *argv[]) {
 | 
			
		||||
  if (argc < 2 || argc > 2) {
 | 
			
		||||
    printf("Usage: %s [NUMBER OF PAGES TO ALLOCATE]\n", argv[0]);
 | 
			
		||||
@@ -104,21 +112,13 @@ int main(int argc, char *argv[]) {
 | 
			
		||||
      return EXIT_FAILURE;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
#if _WIN32
 | 
			
		||||
    u64 fault_start = ReadOSPageFaultCount();
 | 
			
		||||
#else
 | 
			
		||||
    u64 fault_start = page_fault_count();
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    for (u64 i = 0; i < touch_size; ++i) {
 | 
			
		||||
      data[i] = (u8)i;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
#if _WIN32
 | 
			
		||||
    u64 fault_end = ReadOSPageFaultCount();
 | 
			
		||||
#else
 | 
			
		||||
    u64 fault_end = page_fault_count();
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    u64 faults = fault_end - fault_start;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user