Find attach the patch file : $ cd rt-tests $ patch -p1 < ../cyclictest_affinity_check.patch On 14/08/2019 15:25, John Kacur wrote: > > On Wed, 14 Aug 2019, Rachid Koucha wrote: > >> Hi, >> >> First of all, many thanks for such useful tools. >> >> In the source code of cyclictest, I can see a mistake concerning the >> error checking of pthread_setaffinity_np(): >> >> Upon error, pthread functions return an error ant not -1. So, the >> following code: >> >> if (par->cpu != -1) { >> CPU_ZERO(&mask); >> CPU_SET(par->cpu, &mask); >> thread = pthread_self(); >> if (pthread_setaffinity_np(thread, sizeof(mask), &mask) == -1) >> warn("Could not set CPU affinity to CPU #%d\n", >> par->cpu); >> } >> >> should be fixed as follow: >> >> int status; >> >> if (par->cpu != -1) { >> CPU_ZERO(&mask); >> CPU_SET(par->cpu, &mask); >> thread = pthread_self(); >> if ((status = pthread_setaffinity_np(thread, sizeof(mask), &mask)) != 0) >> warn("Could not set CPU affinity to CPU #%d: %s (%d)\n", par->cpu, strerror(status), status); >> } >> >> >> Regards, >> > Thanks, that looks correct. Please generate a patch and I'll apply it. > > John Kacur --
--- old_rt-tests/src/cyclictest/cyclictest.c 2019-08-14 20:28:48.547725419 +0200 +++ new_rt-tests/src/cyclictest/cyclictest.c 2019-08-14 20:20:58.415297592 +0200 @@ -985,6 +985,7 @@ cpu_set_t mask; pthread_t thread; unsigned long smi_now, smi_old; + int status; /* if we're running in numa mode, set our memory node */ if (par->node != -1) @@ -994,9 +995,9 @@ CPU_ZERO(&mask); CPU_SET(par->cpu, &mask); thread = pthread_self(); - if (pthread_setaffinity_np(thread, sizeof(mask), &mask) == -1) - warn("Could not set CPU affinity to CPU #%d\n", - par->cpu); + if ((status = pthread_setaffinity_np(thread, sizeof(mask), &mask)) != 0) + warn("Could not set CPU affinity to CPU #%d: %s (%d)\n", + par->cpu, strerror(status), status); } interval.tv_sec = par->interval / USEC_PER_SEC;