DragonFly kernel List (threaded) for 2006-05
Re: splz still ?
:On Mon, May 15, 2006 at 04:31:29PM +0200, Simon 'corecode' Schubert wrote:
:> On 15.05.2006, at 15:51, Terry Tree wrote:
:> [splz remove]
:> i think splz() does something else (thread switch stuff?) so it may not
:> replaced with crit_*()
:It checks for currently pending interrupts and delivers them. *Very*
:nasty, but not easy to fix without carefully why the code needed it.
It looks like CAM wants to run any pending interrupts while potentially
in a critical section. My guess is that it is trying to avoid too many
unprocessed events building up while it is looping on a queue.
In anycase, you can't just replace a splz() call with a crit_exit().
crit_enter()'s and crit_exit()'s have to match up. So unless that
bit of code was a bug before, the patch won't work.
splz() still serves a vital function on the system. It is used to
run pending interrupts after the last critical section is exited,
and used to run pending interrupts if a thread switch occurs (e.g.
between two threads which are both holding a critical section).
So it can't be removed in general. CAMs use of splz() is rather odd,
but not illegal.