@@ -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;
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. Signed-off-by: Daniel Wagner <dwagner@suse.de> --- src/signaltest/signaltest.c | 44 ++++++++----------------------------- 1 file changed, 9 insertions(+), 35 deletions(-)