Wrap page fault count functions in os-agnostic function
This commit is contained in:
parent
dd512f8304
commit
96ae35912f
@ -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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user