We don't need an extra variable to track the state if a bitmask is available or not. Check directly if the mask is usable. Reviewed-by: Daniel Wagner <dwagner@xxxxxxx> --- src/signaltest/signaltest.c | 44 ++++++++----------------------------- 1 file changed, 9 insertions(+), 35 deletions(-) diff --git a/src/signaltest/signaltest.c b/src/signaltest/signaltest.c index b3a82f8c4f65..e19fc9a740a9 100644 --- a/src/signaltest/signaltest.c +++ b/src/signaltest/signaltest.c @@ -205,15 +205,13 @@ static int verbose; static int quiet; static int lockall; static struct bitmask *affinity_mask = NULL; -static int smp = 0; -static int setaffinity = AFFINITY_UNSPECIFIED; /* Process commandline options */ static void process_options(int argc, char *argv[], unsigned int max_cpus) { - int option_affinity = 0; int error = 0; int numa = 0; + int smp = 0; for (;;) { int option_index = 0; @@ -238,26 +236,19 @@ static void process_options(int argc, char *argv[], unsigned int max_cpus) break; switch (c) { case 'a': - option_affinity = 1; /* smp sets AFFINITY_USEALL in OPT_SMP */ if (smp) break; numa = 1; if (optarg) { parse_cpumask(optarg, max_cpus, &affinity_mask); - setaffinity = AFFINITY_SPECIFIED; } else if (optind < argc && (atoi(argv[optind]) || argv[optind][0] == '0' || argv[optind][0] == '!')) { parse_cpumask(argv[optind], max_cpus, &affinity_mask); - setaffinity = AFFINITY_SPECIFIED; - } else { - setaffinity = AFFINITY_USEALL; } - if (setaffinity == AFFINITY_SPECIFIED && !affinity_mask) - display_help(1); if (verbose) printf("Using %u cpus.\n", numa_bitmask_weight(affinity_mask)); @@ -275,7 +266,6 @@ static void process_options(int argc, char *argv[], unsigned int max_cpus) fatal("numa and smp options are mutually exclusive\n"); smp = 1; num_threads = -1; /* update after parsing */ - setaffinity = AFFINITY_USEALL; break; case 't': num_threads = atoi(optarg); break; case 'v': verbose = 1; break; @@ -294,16 +284,8 @@ static void process_options(int argc, char *argv[], unsigned int max_cpus) if (num_threads < 2) error = 1; - /* if smp wasn't requested, test for numa automatically */ - if (!smp) { - if (setaffinity == AFFINITY_UNSPECIFIED) - setaffinity = AFFINITY_USEALL; - } - - if (option_affinity) { - if (smp) - warn("-a ignored due to smp mode\n"); - } + if (smp && affinity_mask) + warn("-a ignored due to smp mode\n"); if (error) { if (affinity_mask) @@ -365,7 +347,7 @@ int main(int argc, char **argv) } /* Restrict the main pid to the affinity specified by the user */ - if (affinity_mask != NULL) { + if (affinity_mask) { int res; errno = 0; @@ -400,21 +382,13 @@ int main(int argc, char **argv) par[i].bufmsk = VALBUF_SIZE - 1; } - switch (setaffinity) { - case AFFINITY_UNSPECIFIED: - cpu = -1; - break; - case AFFINITY_SPECIFIED: + if (affinity_mask) cpu = cpu_for_thread_sp(i, max_cpus, affinity_mask); - if (verbose) - printf("Thread %d using cpu %d.\n", i, cpu); - break; - case AFFINITY_USEALL: + else cpu = cpu_for_thread_ua(i, max_cpus); - break; - default: - cpu = -1; - } + + if (verbose) + printf("Thread %d using cpu %d.\n", i, cpu); par[i].id = i; par[i].prio = priority; -- 2.29.2