On Fri, 19 Jan 2001, John Baldwin wrote:

> rummage together a vinum stripe to build on or some such.  However, after
> thinking some more, even in a preemptive kernel, Giant will protect against the
> *strategy() race you brought up, because we won't get a context switch in
> kernel mode that releases Giant until either we exit the kernel or we call
> tsleep().  The interrupt handler will block on Giant when its thread runs, so
> it won't run until the top half finishes and returns.  Does that make sense?

This would be a bug in the preemptive kernel.  To work as well as old
kernels, everything that was not run because of a lock must be run when
the lock is released.  This corresponds to splx() running all software
interrupt handlers that became runnable.

Bruce



To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to