]> rtime.felk.cvut.cz Git - jailhouse.git/commitdiff
jailhouse: inmates: bench: Add -R option -- repeats count. master
authorMaxim Baryshnikov <barysmax@fel.cvut.cz>
Wed, 10 Aug 2016 17:35:22 +0000 (19:35 +0200)
committerMaxim Baryshnikov <barysmax@fel.cvut.cz>
Wed, 10 Aug 2016 17:35:22 +0000 (19:35 +0200)
inmates/demos/x86/Membench.c

index f13b1593808a41921301c355860508aa89d3f33d..43cc9619ee5b48b93a8948f74026af42f4997b9f 100644 (file)
@@ -159,6 +159,7 @@ struct cfg {
        bool write;\r
        unsigned ofs;\r
        bool use_cycles; /* instead of ns */\r
+       unsigned repeats;\r
 };\r
 \r
 struct s {\r
@@ -445,6 +446,7 @@ int main(int argc, char *argv[])
                .write = false,\r
                .ofs = 0,\r
                .use_cycles = false, // i.e. use nanoseconds /\r
+               .repeats = 1\r
        };\r
 #ifdef JAILHOUSE\r
        //initialize UART\r
@@ -459,8 +461,10 @@ int main(int argc, char *argv[])
 \r
        printk("cmdline opts: '%s'\n", cmdline);\r
        comm_region->pm_timer_address = 0x408;\r
+\r
        //parse cmdline\r
        cfg.read_count = cmdline_parse_int("-c", cfg.read_count);\r
+       cfg.repeats = cmdline_parse_int("-R", cfg.repeats);\r
        cfg.ofs = cmdline_parse_int("-o", cfg.ofs);\r
        cfg.sequential = !cmdline_parse_bool("-r");\r
        cfg.size = cmdline_parse_int("-s", cfg.size);\r
@@ -490,7 +494,7 @@ int main(int argc, char *argv[])
        CPU_ZERO(&cfg.cpu_set);\r
 \r
        int opt;\r
-       while ((opt = getopt(argc, argv, "c:C:o:rs:t:wy")) != -1) {\r
+       while ((opt = getopt(argc, argv, "c:C:o:rs:t:wyR:")) != -1) {\r
                switch (opt) {\r
                case 'c':\r
                        cfg.read_count = atol(optarg);\r
@@ -517,6 +521,9 @@ int main(int argc, char *argv[])
                case 'y':\r
                        cfg.use_cycles = true;\r
                        break;\r
+               case 'R':\r
+                       cfg.repeats = atol(optarg);\r
+                       break;\r
                default: // '?' //\r
                        fprintf(stderr, "Usage: %s ... TODO\n", argv[0]);\r
                        exit(1);\r
@@ -534,22 +541,26 @@ int main(int argc, char *argv[])
        if (cfg.use_cycles)\r
                ccntr_init();\r
 \r
-       if (cfg.size != 0) {\r
-               run_benchmark(&cfg);\r
-       } else {\r
-                unsigned order, size, step;\r
-                for (order = 10; order <= 24; order++) {\r
-                       for (step = 0; step < 2; step++) {\r
-                               size = 1 << order;\r
-                               if (step == 1)\r
-                                       size += size / 2;\r
-\r
-                               cfg.size = size;\r
-                               run_benchmark(&cfg);\r
+       for (;cfg.repeats > 0; cfg.repeats--) {\r
+               if (cfg.size != 0) {\r
+                       run_benchmark(&cfg);\r
+               } else {\r
+                        unsigned order, size, step;\r
+                        for (order = 10; order <= 24; order++) {\r
+                               for (step = 0; step < 2; step++) {\r
+                                       size = 1 << order;\r
+                                       if (step == 1)\r
+                                               size += size / 2;\r
+\r
+                                       cfg.size = size;\r
+                                       run_benchmark(&cfg);\r
+                               }\r
                        }\r
+                       cfg.size = 0;\r
                }\r
        }\r
 \r
+\r
 #ifndef JAILHOUSE\r
        return 0;\r
 #else\r