8 #include "pagingtest.h"
10 int mmap_test(int test_runs, unsigned long long alloc_size) {
15 struct timeval begin_time, end_time, elapsed_time;
16 struct timeval total_time_mmap, total_time_munmap, total_time_in, total_time_out;
18 timerclear(&total_time_mmap);
19 timerclear(&total_time_munmap);
20 timerclear(&total_time_in);
21 timerclear(&total_time_out);
23 for (i = 0; i < test_runs; i++) {
24 gettimeofday(&begin_time, NULL);
25 buf = mmap(NULL, alloc_size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
26 gettimeofday(&end_time, NULL);
27 if (buf == ((void *)-1)) {
28 fprintf(stderr, "Failed to mmap anonymous memory: %s\n", strerror(errno));
31 timersub(&end_time, &begin_time, &elapsed_time);
32 timeradd(&total_time_mmap, &elapsed_time, &total_time_mmap);
34 gettimeofday(&begin_time, NULL);
35 munmap(buf, alloc_size);
36 gettimeofday(&end_time, NULL);
37 timersub(&end_time, &begin_time, &elapsed_time);
38 timeradd(&total_time_mmap, &elapsed_time, &total_time_mmap);
41 printf("mmap: %llu us\n", total_time_mmap.tv_sec * USEC_PER_SEC + total_time_mmap.tv_usec);
42 printf("munmap: %llu us\n", total_time_munmap.tv_sec * USEC_PER_SEC + total_time_munmap.tv_usec);
47 munmap(buf, alloc_size);