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