linux-rt-users.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Little bug in cyclictest
@ 2019-08-14 12:07 Rachid Koucha
  2019-08-14 13:25 ` John Kacur
  0 siblings, 1 reply; 4+ messages in thread
From: Rachid Koucha @ 2019-08-14 12:07 UTC (permalink / raw)
  To: williams, jkacur; +Cc: linux-rt-users

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,

-- 
Rachid Koucha
 


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Little bug in cyclictest
  2019-08-14 12:07 Little bug in cyclictest Rachid Koucha
@ 2019-08-14 13:25 ` John Kacur
  2019-08-14 18:41   ` Rachid Koucha
  0 siblings, 1 reply; 4+ messages in thread
From: John Kacur @ 2019-08-14 13:25 UTC (permalink / raw)
  To: Rachid Koucha; +Cc: williams, linux-rt-users

[-- Attachment #1: Type: text/plain, Size: 1217 bytes --]



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

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Little bug in cyclictest
  2019-08-14 13:25 ` John Kacur
@ 2019-08-14 18:41   ` Rachid Koucha
  2019-08-15 13:49     ` John Kacur
  0 siblings, 1 reply; 4+ messages in thread
From: Rachid Koucha @ 2019-08-14 18:41 UTC (permalink / raw)
  To: John Kacur; +Cc: williams, linux-rt-users

[-- Attachment #1: Type: text/plain, Size: 1389 bytes --]

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


-- 


[-- Attachment #2: cyclictest_affinity_check.patch --]
[-- Type: text/x-diff, Size: 833 bytes --]

--- 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;

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Little bug in cyclictest
  2019-08-14 18:41   ` Rachid Koucha
@ 2019-08-15 13:49     ` John Kacur
  0 siblings, 0 replies; 4+ messages in thread
From: John Kacur @ 2019-08-15 13:49 UTC (permalink / raw)
  To: Rachid Koucha; +Cc: williams, linux-rt-users

[-- Attachment #1: Type: text/plain, Size: 2045 bytes --]



On Wed, 14 Aug 2019, Rachid Koucha wrote:

> 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
> 

It would be easy for me to take the attachment and apply the patch, but if 
you want to work or play in the open source world, you have to follow 
certain rules for submitting patches.

The Linux Kernel source has a lot of documentation on how to do this, look 
here if you don't know how to access that

https://www.kernel.org/doc/html/v5.0/process/submitting-patches.html

So, you're going to need to describe the changes, and give your 
signed-off-by and no attachments, you have to use plain text.

Thanks!

John Kacur

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2019-08-15 13:50 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-14 12:07 Little bug in cyclictest Rachid Koucha
2019-08-14 13:25 ` John Kacur
2019-08-14 18:41   ` Rachid Koucha
2019-08-15 13:49     ` John Kacur

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).