linux-rt-users.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Daniel Wagner <dwagner@suse.de>
To: Clark Williams <williams@redhat.com>, John Kacur <jkacur@redhat.com>
Cc: linux-rt-users@vger.kernel.org, Daniel Wagner <dwagner@suse.de>
Subject: [PATCH rt-tests v4 03/16] cyclictest: Simplify --smp vs --affinity vs --threads argument logic
Date: Wed, 10 Feb 2021 14:34:37 +0100	[thread overview]
Message-ID: <20210210133450.6991-4-dwagner@suse.de> (raw)
In-Reply-To: <20210210133450.6991-1-dwagner@suse.de>

Allow each command line only to update one variable and do the final
decission at the end of the parsing step. With this the order
of the command line is not important.

Signed-off-by: Daniel Wagner <dwagner@suse.de>
---
 src/cyclictest/cyclictest.c | 34 ++++++++--------------------------
 1 file changed, 8 insertions(+), 26 deletions(-)

diff --git a/src/cyclictest/cyclictest.c b/src/cyclictest/cyclictest.c
index 4c02f067fbad..b5cca3ae166b 100644
--- a/src/cyclictest/cyclictest.c
+++ b/src/cyclictest/cyclictest.c
@@ -880,14 +880,13 @@ static int timermode = TIMER_ABSTIME;
 static int use_system;
 static int priority;
 static int policy = SCHED_OTHER;	/* default policy if not specified */
-static int num_threads = 1;
+static int num_threads = -1;
 static int max_cycles;
 static int clocksel = 0;
 static int quiet;
 static int interval = DEFAULT_INTERVAL;
 static int distance = -1;
 static struct bitmask *affinity_mask = NULL;
-static int smp = 0;
 
 static int clocksources[] = {
 	CLOCK_MONOTONIC,
@@ -953,7 +952,7 @@ enum option_values {
 static void process_options(int argc, char *argv[], int max_cpus)
 {
 	int error = 0;
-	int option_affinity = 0;
+	int smp = 0;
 
 	for (;;) {
 		int option_index = 0;
@@ -1008,10 +1007,6 @@ static void process_options(int argc, char *argv[], int max_cpus)
 		switch (c) {
 		case 'a':
 		case OPT_AFFINITY:
-			option_affinity = 1;
-			/* smp sets AFFINITY_USEALL in OPT_SMP */
-			if (smp)
-				break;
 			if (optarg) {
 				parse_cpumask(optarg, max_cpus, &affinity_mask);
 			} else if (optind < argc &&
@@ -1019,8 +1014,6 @@ static void process_options(int argc, char *argv[], int max_cpus)
 				    argv[optind][0] == '0' ||
 				    argv[optind][0] == '!')) {
 				parse_cpumask(argv[optind], max_cpus, &affinity_mask);
-			} else {
-				num_threads = -1;
 			}
 			break;
 		case 'A':
@@ -1108,22 +1101,14 @@ static void process_options(int argc, char *argv[], int max_cpus)
 		case OPT_SYSTEM:
 			use_system = MODE_SYS_OFFSET; break;
 		case 'S':
-		case OPT_SMP: /* SMP testing */
-			smp = 1;
-			num_threads = -1; /* update after parsing */
-			break;
+		case OPT_SMP:
+			smp = 1; break;
 		case 't':
 		case OPT_THREADS:
-			if (smp) {
-				warn("-t ignored due to smp mode\n");
-				break;
-			}
 			if (optarg != NULL)
 				num_threads = atoi(optarg);
 			else if (optind < argc && atoi(argv[optind]))
 				num_threads = atoi(argv[optind]);
-			else
-				num_threads = -1; /* update after parsing */
 			break;
 		case OPT_TRIGGER:
 			trigger = atoi(optarg);
@@ -1179,13 +1164,10 @@ static void process_options(int argc, char *argv[], int max_cpus)
 		use_nanosleep = MODE_CLOCK_NANOSLEEP;
 	}
 
-	if (option_affinity && smp) {
-		warn("-a ignored due to smp mode\n");
-		if (affinity_mask) {
-			numa_bitmask_free(affinity_mask);
-			affinity_mask = NULL;
-		}
-	}
+	if (smp && num_threads != -1)
+		warn("--threads overwrites smp mode\n");
+	if (smp && affinity_mask)
+		warn("--affinity overwrites smp mode\n");
 
 	if (smi) {
 		if (affinity_mask)
-- 
2.30.0


  parent reply	other threads:[~2021-02-10 13:36 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-10 13:34 [PATCH rt-tests v4 00/16] rt-numa.h cleanups Daniel Wagner
2021-02-10 13:34 ` [PATCH rt-tests v4 01/16] cyclictest: Use numa API directly Daniel Wagner
2021-02-17  3:49   ` John Kacur
2021-02-10 13:34 ` [PATCH rt-tests v4 02/16] cyclictest: Mimic --smp behavior with --affinity Daniel Wagner
2021-02-17  3:49   ` John Kacur
2021-02-10 13:34 ` Daniel Wagner [this message]
2021-02-15  4:06   ` [PATCH rt-tests v4 03/16] cyclictest: Simplify --smp vs --affinity vs --threads argument logic Punit Agrawal
2021-02-15  9:00     ` Daniel Wagner
2021-02-10 13:34 ` [PATCH rt-tests v4 04/16] signaltest: Use affinity_mask for steering thread placement Daniel Wagner
2021-02-10 13:34 ` [PATCH rt-tests v4 05/16] signaltest: Simplify --smp vs --affinity vs --threads argument logic Daniel Wagner
2021-02-10 13:34 ` [PATCH rt-tests v4 06/16] rt-numa: Remove unused definitions and numa_initialize() Daniel Wagner
2021-02-10 13:34 ` [PATCH rt-tests v4 07/16] rt-numa: Add generic cpu_for_thread() helper Daniel Wagner
2021-02-10 13:34 ` [PATCH rt-tests v4 08/16] rt-numa: Use mask size for iterator limit Daniel Wagner
2021-02-10 13:34 ` [PATCH rt-tests v4 09/16] rt-numa: Remove max_cpus argument from parse_cpusmask Daniel Wagner
2021-02-10 13:34 ` [PATCH rt-tests v4 10/16] signaltest: Remove unused max_cpus argument from process_options Daniel Wagner
2021-02-10 13:34 ` [PATCH rt-tests v4 11/16] cyclictest: " Daniel Wagner
2021-02-10 13:34 ` [PATCH rt-tests v4 12/16] rt-numa: Use CPU_SETSIZE as upper loop limit Daniel Wagner
2021-02-10 13:34 ` [PATCH rt-tests v4 13/16] rt-numa: Remove used max_cpus argument from cpu_for_thread() Daniel Wagner
2021-02-10 13:34 ` [PATCH rt-tests v4 14/16] cyclictest: Remove max cpus used verbose information Daniel Wagner
2021-02-10 13:34 ` [PATCH rt-tests v4 15/16] cyclictest: Remove unecessary local variable Daniel Wagner
2021-02-10 13:34 ` [PATCH rt-tests v4 16/16] rt-tests: Rename error.h to rt-error.h Daniel Wagner
2021-02-17  3:50   ` John Kacur

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=20210210133450.6991-4-dwagner@suse.de \
    --to=dwagner@suse.de \
    --cc=jkacur@redhat.com \
    --cc=linux-rt-users@vger.kernel.org \
    --cc=williams@redhat.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;
as well as URLs for NNTP newsgroup(s).