From nobody Fri Dec 19 20:53:32 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1A2D3C83F10 for ; Thu, 31 Aug 2023 11:09:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344891AbjHaLJs (ORCPT ); Thu, 31 Aug 2023 07:09:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43086 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235485AbjHaLJq (ORCPT ); Thu, 31 Aug 2023 07:09:46 -0400 Received: from mgamail.intel.com (mgamail.intel.com [134.134.136.31]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2B57510CB; Thu, 31 Aug 2023 04:09:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1693480168; x=1725016168; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=I9oUICRZut5dlEMJJQgWCOep7ieWF8mRhJ/xmV/hGcI=; b=i0E5tLOSlNQ2PXt9xAHQiGX6w+G6tcr08E8BrqS0rplZDsxkrUAd/4rw VV8xF3PZxjalKrFZ7rDT86QdtGCgmmytatmCRvsTD5y988eE0vgv5QYYw F/KjFB5rGjU86SGTJttw0qIij1+hrZl7A8EosnL8WKMqXgS5X46FHZP33 uV4QPildM5AaLHuZiL9McsClZJeoPnFtgwwqg+P1Yyq5oJnsqaYcYLKC+ OaG7J/KxMD7pI49GSxXrIG9b69fep0bm5xw2WMWPaSeRYGeCK75jXWRXd KhW5gN8ksudFJY/H1pQVzT5hmN/729X37FD98+ffiGkdGJffXYtrzAeHd g==; X-IronPort-AV: E=McAfee;i="6600,9927,10818"; a="439852314" X-IronPort-AV: E=Sophos;i="6.02,216,1688454000"; d="scan'208";a="439852314" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Aug 2023 04:09:27 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10818"; a="863021081" X-IronPort-AV: E=Sophos;i="6.02,216,1688454000"; d="scan'208";a="863021081" Received: from pshishpo-mobl1.ger.corp.intel.com (HELO ijarvine-mobl2.ger.corp.intel.com) ([10.251.214.20]) by orsmga004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Aug 2023 04:09:24 -0700 From: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= To: Reinette Chatre , Shuah Khan , linux-kselftest@vger.kernel.org, Shuah Khan , Maciej Wieczor-Retman , Shaopeng Tan Cc: Fenghua Yu , Babu Moger , LKML , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= Subject: [PATCH v4 8/8] selftests/resctrl: Cleanup benchmark argument parsing Date: Thu, 31 Aug 2023 14:08:43 +0300 Message-Id: <20230831110843.26719-9-ilpo.jarvinen@linux.intel.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230831110843.26719-1-ilpo.jarvinen@linux.intel.com> References: <20230831110843.26719-1-ilpo.jarvinen@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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: Ilpo J=C3=A4rvinen Tested-by: Shaopeng Tan Reviewed-by: Reinette Chatre Reviewed-by: Shaopeng Tan --- .../testing/selftests/resctrl/resctrl_tests.c | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/tools/testing/selftests/resctrl/resctrl_tests.c b/tools/testin= g/selftests/resctrl/resctrl_tests.c index 48e5afb1530c..831d50a37d78 100644 --- a/tools/testing/selftests/resctrl/resctrl_tests.c +++ b/tools/testing/selftests/resctrl/resctrl_tests.c @@ -169,27 +169,34 @@ static void run_cat_test(int cpu_no, int no_of_bits) =20 int main(int argc, char **argv) { - bool has_ben =3D false, mbm_test =3D true, mba_test =3D true, cmt_test = =3D true; - int c, cpu_no =3D 1, argc_new =3D argc, i, no_of_bits =3D 0; - const char *benchmark_cmd[BENCHMARK_ARGS]; - int ben_ind, tests =3D 0; + bool mbm_test =3D true, mba_test =3D true, cmt_test =3D true; + int c, cpu_no =3D 1, i, no_of_bits =3D 0; + const char *benchmark_cmd[BENCHMARK_ARGS] =3D {}; char *span_str =3D NULL; bool cat_test =3D true; + int tests =3D 0; int ret; =20 - for (i =3D 0; i < argc; i++) { - if (strcmp(argv[i], "-b") =3D=3D 0) { - ben_ind =3D i + 1; - argc_new =3D ben_ind - 1; - has_ben =3D true; - break; - } - } - - while ((c =3D getopt(argc_new, argv, "ht:b:n:p:")) !=3D -1) { + while ((c =3D getopt(argc, argv, "ht:b:n:p:")) !=3D -1) { char *token; =20 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 >=3D BENCHMARK_ARGS) + ksft_exit_fail_msg("Too long benchmark command"); + + /* Extract benchmark command from command line. */ + for (i =3D 0; i < argc - optind; i++) + benchmark_cmd[i] =3D argv[i + optind]; + benchmark_cmd[i] =3D NULL; + + goto last_arg; case 't': token =3D strtok(optarg, ","); =20 @@ -238,6 +245,7 @@ int main(int argc, char **argv) return -1; } } +last_arg: =20 ksft_print_header(); =20 @@ -257,15 +265,7 @@ int main(int argc, char **argv) =20 filter_dmesg(); =20 - if (has_ben) { - if (argc - ben_ind >=3D BENCHMARK_ARGS) - ksft_exit_fail_msg("Too long benchmark command.\n"); - - /* Extract benchmark command from command line. */ - for (i =3D 0; i < argc - ben_ind; i++) - benchmark_cmd[i] =3D argv[i + ben_ind]; - benchmark_cmd[i] =3D NULL; - } else { + if (!benchmark_cmd[0]) { /* If no benchmark is given by "-b" argument, use fill_buf. */ benchmark_cmd[0] =3D "fill_buf"; ret =3D asprintf(&span_str, "%u", DEFAULT_SPAN); --=20 2.30.2