From 270b2074a96cdde48bedcdd33e6c711d0a342e0c Mon Sep 17 00:00:00 2001 From: Maxim Baryshnikov Date: Wed, 10 Aug 2016 19:35:22 +0200 Subject: [PATCH] jailhouse: inmates: bench: Add -R option -- repeats count. --- inmates/demos/x86/Membench.c | 37 +++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/inmates/demos/x86/Membench.c b/inmates/demos/x86/Membench.c index f13b159..43cc961 100644 --- a/inmates/demos/x86/Membench.c +++ b/inmates/demos/x86/Membench.c @@ -159,6 +159,7 @@ struct cfg { bool write; unsigned ofs; bool use_cycles; /* instead of ns */ + unsigned repeats; }; struct s { @@ -445,6 +446,7 @@ int main(int argc, char *argv[]) .write = false, .ofs = 0, .use_cycles = false, // i.e. use nanoseconds / + .repeats = 1 }; #ifdef JAILHOUSE //initialize UART @@ -459,8 +461,10 @@ int main(int argc, char *argv[]) printk("cmdline opts: '%s'\n", cmdline); comm_region->pm_timer_address = 0x408; + //parse cmdline cfg.read_count = cmdline_parse_int("-c", cfg.read_count); + cfg.repeats = cmdline_parse_int("-R", cfg.repeats); cfg.ofs = cmdline_parse_int("-o", cfg.ofs); cfg.sequential = !cmdline_parse_bool("-r"); cfg.size = cmdline_parse_int("-s", cfg.size); @@ -490,7 +494,7 @@ int main(int argc, char *argv[]) CPU_ZERO(&cfg.cpu_set); int opt; - while ((opt = getopt(argc, argv, "c:C:o:rs:t:wy")) != -1) { + while ((opt = getopt(argc, argv, "c:C:o:rs:t:wyR:")) != -1) { switch (opt) { case 'c': cfg.read_count = atol(optarg); @@ -517,6 +521,9 @@ int main(int argc, char *argv[]) case 'y': cfg.use_cycles = true; break; + case 'R': + cfg.repeats = atol(optarg); + break; default: // '?' // fprintf(stderr, "Usage: %s ... TODO\n", argv[0]); exit(1); @@ -534,22 +541,26 @@ int main(int argc, char *argv[]) if (cfg.use_cycles) ccntr_init(); - if (cfg.size != 0) { - run_benchmark(&cfg); - } else { - unsigned order, size, step; - for (order = 10; order <= 24; order++) { - for (step = 0; step < 2; step++) { - size = 1 << order; - if (step == 1) - size += size / 2; - - cfg.size = size; - run_benchmark(&cfg); + for (;cfg.repeats > 0; cfg.repeats--) { + if (cfg.size != 0) { + run_benchmark(&cfg); + } else { + unsigned order, size, step; + for (order = 10; order <= 24; order++) { + for (step = 0; step < 2; step++) { + size = 1 << order; + if (step == 1) + size += size / 2; + + cfg.size = size; + run_benchmark(&cfg); + } } + cfg.size = 0; } } + #ifndef JAILHOUSE return 0; #else -- 2.39.2