splz still ?
Matthew Dillon
dillon at apollo.backplane.com
Mon May 15 09:14:58 PDT 2006
: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.
:
:Joerg
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.
-Matt
Matthew Dillon
<dillon at xxxxxxxxxxxxx>
More information about the Kernel
mailing list