diff options
Diffstat (limited to 'perf_rc_mmap.c')
-rw-r--r-- | perf_rc_mmap.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/perf_rc_mmap.c b/perf_rc_mmap.c index 7cfc0d1..b87c627 100644 --- a/perf_rc_mmap.c +++ b/perf_rc_mmap.c @@ -144,6 +144,10 @@ int main(int ac, char *argv[]) int i, pre_loop_res, post_loop_res, sum = 0; void *addr; /* mmaped address */ unsigned long start_count, stop_count, s_period=1000000; +#ifdef MAX_DELAY + unsigned long tmp_value = 0; + unsigned long max_value = 0; +#endif while ((option = getopt(ac, argv, "c:n:s:")) != -1) { switch (option) { @@ -201,7 +205,14 @@ int main(int ac, char *argv[]) start_count = mmap_read_self(addr); for (i = 0; i < 1000; i++) { sum = loop(a, b, len); +#ifndef MAX_DELAY mmap_read_self(addr); +#else + tmp_value = mmap_read_self(addr); + if ( max_value < tmp_value ) { + max_value = tmp_value; + } +#endif } stop_count = mmap_read_self(addr); @@ -217,7 +228,11 @@ int main(int ac, char *argv[]) ioctl(fddev, PERF_EVENT_IOC_DISABLE, 0); /* --------------------End Critical section-------------- */ post_loop_res = abs(stop_count-start_count)/1000; - printf("\t%s Counter[%d] Delay[cpucycles]=%d Overflows=%d\n", argv[0], cnt, abs(post_loop_res - pre_loop_res),overflow); +#ifndef MAX_DELAY + printf("\t%s Counter[%d] avg delay[cpucycles]=%d Overflows=%d\n", argv[0], cnt, abs(post_loop_res - pre_loop_res),overflow); +#else + printf("\t%s Counter[%d] max delay[cpucycles]=%ld avg delay[cpucycles]=%d Overflows=%d\n", argv[0], cnt, max_value, abs(post_loop_res - pre_loop_res),overflow); +#endif munmap(addr, page_size); free(a); free(b); |