Commit f23c7925 authored by Ilpo Järvinen's avatar Ilpo Järvinen Committed by Shuah Khan

selftests/resctrl: Cleanup benchmark argument parsing

Benchmark argument is handled by custom argument parsing code which is
more complicated than it needs to be.

Process benchmark argument within the normal getopt() handling and drop
unnecessary ben_ind and has_ben variables. When -b is given, terminate
the argument processing as -b consumes all remaining arguments.
Signed-off-by: default avatarIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Tested-by: default avatarShaopeng Tan <tan.shaopeng@jp.fujitsu.com>
Reviewed-by: default avatarReinette Chatre <reinette.chatre@intel.com>
Reviewed-by: default avatarShaopeng Tan <tan.shaopeng@jp.fujitsu.com>
Reviewed-by: default avatar"Wieczor-Retman, Maciej" <maciej.wieczor-retman@intel.com>
Signed-off-by: default avatarShuah Khan <skhan@linuxfoundation.org>
parent 149ff729
...@@ -169,27 +169,34 @@ static void run_cat_test(int cpu_no, int no_of_bits) ...@@ -169,27 +169,34 @@ static void run_cat_test(int cpu_no, int no_of_bits)
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
bool has_ben = false, mbm_test = true, mba_test = true, cmt_test = true; bool mbm_test = true, mba_test = true, cmt_test = true;
int c, cpu_no = 1, argc_new = argc, i, no_of_bits = 0; const char *benchmark_cmd[BENCHMARK_ARGS] = {};
const char *benchmark_cmd[BENCHMARK_ARGS]; int c, cpu_no = 1, i, no_of_bits = 0;
int ben_ind, tests = 0;
char *span_str = NULL; char *span_str = NULL;
bool cat_test = true; bool cat_test = true;
int tests = 0;
int ret; int ret;
for (i = 0; i < argc; i++) { while ((c = getopt(argc, argv, "ht:b:n:p:")) != -1) {
if (strcmp(argv[i], "-b") == 0) {
ben_ind = i + 1;
argc_new = ben_ind - 1;
has_ben = true;
break;
}
}
while ((c = getopt(argc_new, argv, "ht:b:n:p:")) != -1) {
char *token; char *token;
switch (c) { switch (c) {
case 'b':
/*
* First move optind back to the (first) optarg and
* then build the benchmark command using the
* remaining arguments.
*/
optind--;
if (argc - optind >= BENCHMARK_ARGS)
ksft_exit_fail_msg("Too long benchmark command");
/* Extract benchmark command from command line. */
for (i = 0; i < argc - optind; i++)
benchmark_cmd[i] = argv[i + optind];
benchmark_cmd[i] = NULL;
goto last_arg;
case 't': case 't':
token = strtok(optarg, ","); token = strtok(optarg, ",");
...@@ -238,6 +245,7 @@ int main(int argc, char **argv) ...@@ -238,6 +245,7 @@ int main(int argc, char **argv)
return -1; return -1;
} }
} }
last_arg:
ksft_print_header(); ksft_print_header();
...@@ -257,15 +265,7 @@ int main(int argc, char **argv) ...@@ -257,15 +265,7 @@ int main(int argc, char **argv)
filter_dmesg(); filter_dmesg();
if (has_ben) { if (!benchmark_cmd[0]) {
if (argc - ben_ind >= BENCHMARK_ARGS)
ksft_exit_fail_msg("Too long benchmark command.\n");
/* Extract benchmark command from command line. */
for (i = 0; i < argc - ben_ind; i++)
benchmark_cmd[i] = argv[i + ben_ind];
benchmark_cmd[i] = NULL;
} else {
/* If no benchmark is given by "-b" argument, use fill_buf. */ /* If no benchmark is given by "-b" argument, use fill_buf. */
benchmark_cmd[0] = "fill_buf"; benchmark_cmd[0] = "fill_buf";
ret = asprintf(&span_str, "%u", DEFAULT_SPAN); ret = asprintf(&span_str, "%u", DEFAULT_SPAN);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment