diff options
Diffstat (limited to 'tools/testing/selftests/bpf/bench.c')
| -rw-r--r-- | tools/testing/selftests/bpf/bench.c | 15 | 
1 files changed, 9 insertions, 6 deletions
diff --git a/tools/testing/selftests/bpf/bench.c b/tools/testing/selftests/bpf/bench.c index d9c080ac1796..41fe5a82b88b 100644 --- a/tools/testing/selftests/bpf/bench.c +++ b/tools/testing/selftests/bpf/bench.c @@ -17,7 +17,7 @@ struct env env = {  	.duration_sec = 5,  	.affinity = false,  	.quiet = false, -	.consumer_cnt = 1, +	.consumer_cnt = 0,  	.producer_cnt = 1,  }; @@ -441,12 +441,14 @@ static void setup_timer()  static void set_thread_affinity(pthread_t thread, int cpu)  {  	cpu_set_t cpuset; +	int err;  	CPU_ZERO(&cpuset);  	CPU_SET(cpu, &cpuset); -	if (pthread_setaffinity_np(thread, sizeof(cpuset), &cpuset)) { +	err = pthread_setaffinity_np(thread, sizeof(cpuset), &cpuset); +	if (err) {  		fprintf(stderr, "setting affinity to CPU #%d failed: %d\n", -			cpu, errno); +			cpu, -err);  		exit(1);  	}  } @@ -467,7 +469,7 @@ static int next_cpu(struct cpu_set *cpu_set)  		exit(1);  	} -	return cpu_set->next_cpu++; +	return cpu_set->next_cpu++ % env.nr_cpus;  }  static struct bench_state { @@ -605,7 +607,7 @@ static void setup_benchmark(void)  				     bench->consumer_thread, (void *)(long)i);  		if (err) {  			fprintf(stderr, "failed to create consumer thread #%d: %d\n", -				i, -errno); +				i, -err);  			exit(1);  		}  		if (env.affinity) @@ -624,7 +626,7 @@ static void setup_benchmark(void)  				     bench->producer_thread, (void *)(long)i);  		if (err) {  			fprintf(stderr, "failed to create producer thread #%d: %d\n", -				i, -errno); +				i, -err);  			exit(1);  		}  		if (env.affinity) @@ -657,6 +659,7 @@ static void collect_measurements(long delta_ns) {  int main(int argc, char **argv)  { +	env.nr_cpus = get_nprocs();  	parse_cmdline_args_init(argc, argv);  	if (env.list) {  |