#include #include #include #include int main(void) { size_t pagesize = getpagesize(); printf("System page size: %zu bytes\n", pagesize); for (size_t i = 0; i < 1000; i++) { char *region = mmap( NULL, pagesize * (i + 1), PROT_READ|PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE, // to a private block of hardware memory -1, 0 ); if (region == MAP_FAILED) { perror("Could not mmap"); return 1; } // Trigger page fault for (size_t j = 0; j < pagesize * (i + 1); j++) { region[j] = 'a'; } int unmap_result = munmap(region, pagesize * (i + 1)); if (unmap_result == -1) { perror("Could not munmap"); return 1; } sleep(1); } return 0; }