summaryrefslogtreecommitdiff
path: root/perf_rc_mmap.c
diff options
context:
space:
mode:
Diffstat (limited to 'perf_rc_mmap.c')
-rw-r--r--perf_rc_mmap.c17
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);