Date: Mon, 7 Jul 2003 15:49:34 -0400 (EDT) From: Daniel Eischen <eischen@vigrid.com> To: John Baldwin <jhb@FreeBSD.org> Cc: threads@FreeBSD.org Subject: Re: libc_r silliness Message-ID: <Pine.GSO.4.10.10307071543570.15065-100000@pcnet5.pcnet.com> In-Reply-To: <XFMail.20030707153402.jhb@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, 7 Jul 2003, John Baldwin wrote: > > 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). And SCHED_OTHER is where the confusion lies. In our thread libraries (except libthr), SCHED_OTHER is treated the same as SCHED_RR (priorites 0 .. 31). This no matchy kernel. If you try to use those values in pthread_attr_setschedparam() or pthread_setschedparam(), you would get EINVAL for values less than 0. > > 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}? Sure, update the man pages if you want ;-) I have not found anything yet regarding sched_get_priority_{min,max} confusion in the POSIX spec... -- Dan Eischen
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.GSO.4.10.10307071543570.15065-100000>