cvs commit: src/sys/netinet sctp_bsd_addr.c
John Baldwin
jhb at freebsd.org
Wed Jan 2 10:05:08 PST 2008
On Tuesday 01 January 2008 04:45:46 am M. Warner Losh wrote:
> In message: <20080101161858.A10345 at delplex.bde.org>
> Bruce Evans <brde at optusnet.com.au> writes:
> : On Mon, 31 Dec 2007, M. Warner Losh wrote:
> :
> : > In message: <200712311219.08286.jhb at freebsd.org>
> : > John Baldwin <jhb at FreeBSD.org> writes:
> :
> : > : The more correct fix though is to do a 'sched_prio()' at the start of
the
> : > : thread's main loop to set the priority and then not adjust it via
msleep().
> : > : Kernel threads really should never pass a priority to msleep() but
always '0'
> : > : (which means "don't change my priority").
> : >
> : > Not PZERO? When should one use PZERO and when should one use a bare
> : > '0'? Can this information be added to the man page?
> :
> : PZERO is compatibility cruft which should never be used. Just a few
> : places in kern still use it to invent a priority when no suitable
> : priority (like PSOCK or PRIBIO) is already #defined. It isn't clear
> : where these invented priorities are suitable.
>
> Do we want to document the other Pxxxx priorities?
Also, PZERO is meant to be a base for userland priorities (threads in userland
should be <= PZERO except for real time threads) and is an actual priority
value. 0 means "don't change anything."
> : Otherwise, PZERO has a completely different meaning from either priority
> : 0 (maximal) or the bare 0 arg to msleep. It means some middle priority,
> : or the bias from priority 0 to get to that middle priority, so that
> : after subtracting it, 0 becomes the middle priority. The bare 0 is
> : actualy priority 0 (maximal) overloaded to mean "don't change the
> : priority". This overloading doesn't lose anything except clarity since
> : nothing is permitted to wake up at maximal priority after a sleep.
> : (Maximal priority is reserved for realtime priority ithreads and even
> : much lower priority ithreads are not permitted to sleep, and non-interrupt
> : threads aren't permitted to run at ithread priorities except temporarily
> : for priority propagation.)
>
> So would the following be a reasonable change to sleep.9?
>
> Index: sleep.9
> ===================================================================
> RCS file: /home/ncvs/src/share/man/man9/sleep.9,v
> retrieving revision 1.61
> diff -u -r1.61 sleep.9
> --- sleep.9 30 Mar 2007 18:07:26 -0000 1.61
> +++ sleep.9 1 Jan 2008 09:44:01 -0000
> @@ -93,6 +93,10 @@
> runnable with the specified
> .Fa priority
> when it resumes.
> +.Dv PZERO
> +should never be used, as it is for compatibility only.
> +A new priority of 0 means to use the thread's current priority when
> +it is made runnable again.
> If
> .Fa priority
> includes the
The manpage already says that priority 0 doesn't change the priority (look at
the first half of the sentence before your new one).
I'm not sure PZERO deserves special mention. You could perhaps add a new
section after 'DESCRIPTION' that covers the various Pxxx priorities that are
often used for *sleep() routines such as PZERO, PSOCK, PVM, etc.
--
John Baldwin
More information about the cvs-src
mailing list