Wrap page fault count functions in os-agnostic function

This commit is contained in:
Abdelrahman Said 2023-09-24 19:00:25 +01:00
parent dd512f8304
commit 96ae35912f

View File

@ -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;