Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 01 Jan 2008 07:09:17 -0500
From:      Randall Stewart <rrs@cisco.com>
To:        "M. Warner Losh" <imp@bsdimp.com>
Cc:        cvs-all@FreeBSD.org, cvs-src@FreeBSD.org, src-committers@FreeBSD.org, jhb@FreeBSD.org, brde@optusnet.com.au
Subject:   Re: cvs commit: src/sys/netinet sctp_bsd_addr.c
Message-ID:  <477A2D6D.9030403@cisco.com>
In-Reply-To: <20080101.024546.1079618522.imp@bsdimp.com>
References:  <200712311219.08286.jhb@freebsd.org>	<20071231.203720.1306324107.imp@bsdimp.com>	<20080101161858.A10345@delplex.bde.org> <20080101.024546.1079618522.imp@bsdimp.com>

next in thread | previous in thread | raw e-mail | index | archive | help
M. Warner Losh wrote:
> In message: <20080101161858.A10345@delplex.bde.org>
>             Bruce Evans <brde@optusnet.com.au> writes:
> : On Mon, 31 Dec 2007, M. Warner Losh wrote:
> : 
> : > In message: <200712311219.08286.jhb@freebsd.org>
> : >            John Baldwin <jhb@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?
> 
> : 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
> 
> Warner
> 
That sure would have been nice to read in the manual page .. I would
have not changed this at all if I would have had that to read :-(

I was pinged on xchat over an issue where the sctp worker thread
was hanging... and in the process I was told that 0 was max
priority.. which really concerned me... 0 having a special
meaning of.. "don't change my priority" means the old code
was fine :-0

Not that having a mid-range lower priority is a bad thing
for this task...

R

-- 
Randall Stewart
NSSTG - Cisco Systems Inc.
803-345-0369 <or> 803-317-4952 (cell)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?477A2D6D.9030403>