Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 20 Jan 2001 04:48:03 +1100 (EST)
From:      Bruce Evans <bde@zeta.org.au>
To:        John Baldwin <jhb@FreeBSD.ORG>
Cc:        Poul-Henning Kamp <phk@critter.freebsd.dk>, peter@netplex.com.au, bright@wintelcom.net, current@FreeBSD.ORG, arch@FreeBSD.ORG, rjesup@wgate.com, Soren Schmidt <sos@freebsd.dk>
Subject:   Re: HEADS-UP: await/asleep removal imminent
Message-ID:  <Pine.BSF.4.21.0101200438450.25410-100000@besplex.bde.org>
In-Reply-To: <XFMail.010119004112.jhb@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
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 majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0101200438450.25410-100000>