Subject: splclock and setrunqueue
To: None <tech-kern@NetBSD.ORG>
From: R.Gopalakrishnan <gopal@dworkin.wustl.edu>
List: tech-kern
Date: 07/26/1996 11:19:04
Hi
Throughout the kernel, calls to setrunqueue() and remrq() are
potected by splclock() (or splstatclock()). This can be seen
for example in the function userret() in trap.c. Both
setrunqueue() and remrq() modify the process run Q i.e the
variable "qs" defined in proc.h.

The problem is that setrunqueue() is also called in wakeup().
Since splclock() cannot block all calls to wakeup(), it is possible
that setrunqueue() is interrupted, wakeup() is called, which in
turn calls setrunqueue() again. Is this possible ?

-gopal