Bug or misdocumented feature in pthread_setaffinity_np.3

Alejandro Colomar colomar.6.4.3@gmail.com
Mon Sep 7 09:26:57 GMT 2020


Hi Michael,

On 2020-09-07 11:21, Michael Kerrisk (man-pages) wrote:
>> Or is it that those functions return an error code that corresponds to a
>> valid `errno` error number?  In that case it could be documented better
>> IMHO.
> 
> Yes, probably you are right. The thing is, when you use pthreads you
> have to know they are different from the conventional APIs. The
> pthreads(7) page hints at this:
> 
>         Most  pthreads  functions return 0 on success, and an error number
>         on failure.  Note that the pthreads functions do  not  set  errno.
> 
>> If that is the case, do those functions set `errno` and also return that
>> same `errno` value redundantly?
> 
> No, they don't use errno at all.
> 
> So, I exp[anded the text in pthreads(7), to make the point more explicit:
> 
>         Most  pthreads  functions return 0 on success, and an error number
>         on failure.  The error numbers that can be returned have the  same
>         meaning  as  the  error  numbers returned in errno by conventional
>         system calls and C library  functions.   Note  that  the  pthreads
>         functions  do  not  set errno.
> 
> Note that the various pthreads manual pages (should) all refer to
> pthreads(7) in SEE ALSO. I'm reluctant to add a note like this to
> every pthreads page, since it seems verbose, but I have also added
> this note to errno(3):
> 
>         Note  that  the  POSIX  threads  APIs  do  not set errno on error.
>         Instead, on failure they return an error number  as  the  function
>         result.   These  error numbers have the same meanings as the error
>         numbers returned in errno by other APIs.
> 
> Perhaps that suffices for you?

Yes, that is much clearer now.

Thanks,

Alex


More information about the Libc-alpha mailing list