libc_r silliness

John Baldwin jhb at FreeBSD.org
Mon Jul 7 12:33:51 PDT 2003


On 07-Jul-2003 Daniel Eischen wrote:
> On Mon, 7 Jul 2003, John Baldwin wrote:
> 
>> Just wondering why the PTHREAD_{MIN,MAX}_PRIORITY macros referenced in
>> the pthread_{get,set}schedparam() man pages are not available to
>> applications but are hidden in pthread_private.h.  It would seem that
>> these values should be exported in pthread.h.
> 
> Because they are not defined by the POSIX spec.  According
> to POSIX you should use:
> 
>   sched_get_priority_max(), sched_get_priority_min()
> 
> but it is confusing because these are specified for the process
> scheduling.  The values returned by these system calls, do not
> necessarily correspond to the values used by our thread libraries
> (in fact, they don't).

They do if you use SCHED_RR (which is the default policy) or SCHED_FIFO.
SCHED_OTHER uses -20 to 20 (nice values).

> I believe somewhere in the old spec, there were supposed to be
> at least 31 or 32 priorities (I can't seem to find that mentioned
> in the new spec).  Our thread libraries, at least libc_r and
> libpthread, use priorities 0 .. 31.
> 
> I don't really know how to handle this.  We can wrap
> sched_get_priority_{min,max}(), but how do we know whether
> the application wants process priorities or thread
> priorities?

Ugh.  Perhaps the manpage should at least be updated to not
reference the macros.  What does POSIX say about the confusion
between sched_get_priority_{min,max}?

-- 

John Baldwin <jhb at FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve!"  -  http://www.FreeBSD.org/


More information about the freebsd-threads mailing list