From: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
To: Shuah Khan <skhan@linuxfoundation.org>,
linux-kselftest@vger.kernel.org, Shuah Khan <shuah@kernel.org>,
Reinette Chatre <reinette.chatre@intel.com>,
Maciej Wieczor-Retman <maciej.wieczor-retman@intel.com>,
Fenghua Yu <fenghua.yu@intel.com>,
linux-kernel@vger.kernel.org
Cc: "Shaopeng Tan" <tan.shaopeng@jp.fujitsu.com>,
"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
Subject: [PATCH 7/7] selftests/resctrl: Cleanup benchmark argument parsing
Date: Tue, 8 Aug 2023 12:16:25 +0300 [thread overview]
Message-ID: <20230808091625.12760-8-ilpo.jarvinen@linux.intel.com> (raw)
In-Reply-To: <20230808091625.12760-1-ilpo.jarvinen@linux.intel.com>
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
entirely unnecessary ben_ind and has_ben variables. If -b is not given,
setup the default benchmark command right after the switch statement
and make -b to goto over it while it terminates the getopt() loop.
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
---
.../testing/selftests/resctrl/resctrl_tests.c | 56 +++++++++----------
1 file changed, 25 insertions(+), 31 deletions(-)
diff --git a/tools/testing/selftests/resctrl/resctrl_tests.c b/tools/testing/selftests/resctrl/resctrl_tests.c
index 81c2ed299e6f..a437aaa69cc5 100644
--- a/tools/testing/selftests/resctrl/resctrl_tests.c
+++ b/tools/testing/selftests/resctrl/resctrl_tests.c
@@ -173,25 +173,27 @@ static void run_cat_test(int cpu_no, int no_of_bits)
int main(int argc, char **argv)
{
- bool has_ben = false, mbm_test = true, mba_test = true, cmt_test = true;
- int c, cpu_no = 1, argc_new = argc, i, no_of_bits = 0;
+ bool mbm_test = true, mba_test = true, cmt_test = true;
+ int c, cpu_no = 1, i, no_of_bits = 0;
const char *benchmark_cmd[BENCHMARK_ARGS];
- int ben_ind, tests = 0;
bool cat_test = true;
+ int tests = 0;
- for (i = 0; i < argc; i++) {
- 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) {
+ while ((c = getopt(argc, argv, "ht:b:n:p:")) != -1) {
char *token;
switch (c) {
+ case 'b':
+ optind--; /* Back to optarg */
+ if (argc - optind >= BENCHMARK_ARGS - 1)
+ 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':
token = strtok(optarg, ",");
@@ -241,6 +243,16 @@ int main(int argc, char **argv)
}
}
+ /* If no benchmark is given by "-b" argument, use fill_buf. */
+ benchmark_cmd[0] = "fill_buf";
+ benchmark_cmd[1] = DEFAULT_SPAN_STR;
+ benchmark_cmd[2] = "1";
+ benchmark_cmd[3] = "0";
+ benchmark_cmd[4] = "false";
+ benchmark_cmd[5] = NULL;
+
+last_arg:
+
ksft_print_header();
/*
@@ -251,24 +263,6 @@ int main(int argc, char **argv)
if (geteuid() != 0)
return ksft_exit_skip("Not running as root. Skipping...\n");
- if (has_ben) {
- if (argc - ben_ind >= BENCHMARK_ARGS - 1)
- ksft_exit_fail_msg("Too long benchmark command");
-
- /* 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. */
- benchmark_cmd[0] = "fill_buf";
- benchmark_cmd[1] = DEFAULT_SPAN_STR;
- benchmark_cmd[2] = "1";
- benchmark_cmd[3] = "0";
- benchmark_cmd[4] = "false";
- benchmark_cmd[5] = NULL;
- }
-
if (!check_resctrlfs_support())
return ksft_exit_skip("resctrl FS does not exist. Enable X86_CPU_RESCTRL config option.\n");
--
2.30.2
next prev parent reply other threads:[~2023-08-08 16:46 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-08 9:16 [PATCH 0/7] selftests/resctrl: Rework benchmark command handling Ilpo Järvinen
2023-08-08 9:16 ` [PATCH 1/7] selftests/resctrl: Ensure the benchmark commands fits to its array Ilpo Järvinen
2023-08-14 17:48 ` Reinette Chatre
2023-08-15 9:10 ` Ilpo Järvinen
2023-08-15 15:47 ` Reinette Chatre
2023-08-16 6:32 ` Ilpo Järvinen
2023-08-16 21:46 ` Reinette Chatre
2023-08-08 9:16 ` [PATCH 2/7] selftests/resctrl: Correct benchmark command help Ilpo Järvinen
2023-08-14 17:49 ` Reinette Chatre
2023-08-15 9:11 ` Ilpo Järvinen
2023-08-08 9:16 ` [PATCH 3/7] selftests/resctrl: Remove bw_report and bm_type from main() Ilpo Järvinen
2023-08-14 17:49 ` Reinette Chatre
2023-08-08 9:16 ` [PATCH 4/7] selftests/resctrl: Simplify span lifetime Ilpo Järvinen
2023-08-14 17:49 ` Reinette Chatre
2023-08-08 9:16 ` [PATCH 5/7] selftests/resctrl: Use pointers to build benchmark cmd and make it const Ilpo Järvinen
2023-08-14 17:50 ` Reinette Chatre
2023-08-15 9:42 ` Ilpo Järvinen
2023-08-15 15:48 ` Reinette Chatre
2023-08-16 7:13 ` Ilpo Järvinen
2023-08-16 21:52 ` Reinette Chatre
2023-08-17 8:32 ` Ilpo Järvinen
2023-08-17 15:45 ` Reinette Chatre
2023-08-18 7:25 ` Ilpo Järvinen
2023-08-08 9:16 ` [PATCH 6/7] selftests/resctrl: remove ben_count variable Ilpo Järvinen
2023-08-14 17:51 ` Reinette Chatre
2023-08-08 9:16 ` Ilpo Järvinen [this message]
2023-08-14 17:56 ` [PATCH 7/7] selftests/resctrl: Cleanup benchmark argument parsing Reinette Chatre
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230808091625.12760-8-ilpo.jarvinen@linux.intel.com \
--to=ilpo.jarvinen@linux.intel.com \
--cc=fenghua.yu@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=maciej.wieczor-retman@intel.com \
--cc=reinette.chatre@intel.com \
--cc=shuah@kernel.org \
--cc=skhan@linuxfoundation.org \
--cc=tan.shaopeng@jp.fujitsu.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox