X-Git-Url: https://git.lttng.org/?p=urcu.git;a=blobdiff_plain;f=test_perthreadlock.c;h=31b7721d631a2ea8e4470029da35d66d3bb89e7f;hp=5bbe72b1637af9adbaa099cb4c4631a74a3fc50e;hb=6af882baf4a7cc82167b8e1abba5d6c851e0e6e8;hpb=2a7ac59da1436b86d7cb59fb8b5712c7d98c1519 diff --git a/test_perthreadlock.c b/test_perthreadlock.c index 5bbe72b..31b7721 100644 --- a/test_perthreadlock.c +++ b/test_perthreadlock.c @@ -102,22 +102,33 @@ static unsigned int cpu_affinities[NR_CPUS]; static unsigned int next_aff = 0; static int use_affinity = 0; +pthread_mutex_t affinity_mutex = PTHREAD_MUTEX_INITIALIZER; + static void set_affinity(void) { cpu_set_t mask; int cpu; + int ret; if (!use_affinity) return; + ret = pthread_mutex_lock(&affinity_mutex); + if (ret) { + perror("Error in pthread mutex lock"); + exit(-1); + } cpu = cpu_affinities[next_aff++]; + ret = pthread_mutex_unlock(&affinity_mutex); + if (ret) { + perror("Error in pthread mutex unlock"); + exit(-1); + } CPU_ZERO(&mask); CPU_SET(cpu, &mask); sched_setaffinity(0, sizeof(mask), &mask); } - - /* * returns 0 if test should end. */