From owner-freebsd-hackers Tue Apr 22 13:12:29 1997 Return-Path: Received: (from root@localhost) by hub.freebsd.org (8.8.5/8.8.5) id NAA29776 for hackers-outgoing; Tue, 22 Apr 1997 13:12:29 -0700 (PDT) Received: from phaeton.artisoft.com (phaeton.Artisoft.COM [198.17.250.50]) by hub.freebsd.org (8.8.5/8.8.5) with SMTP id NAA29765 for ; Tue, 22 Apr 1997 13:12:22 -0700 (PDT) Received: (from terry@localhost) by phaeton.artisoft.com (8.6.11/8.6.9) id NAA26903; Tue, 22 Apr 1997 13:08:59 -0700 From: Terry Lambert Message-Id: <199704222008.NAA26903@phaeton.artisoft.com> Subject: Re: Price of FreeBSD (was On Holy Wars...) To: james@westongold.com (James Mansion) Date: Tue, 22 Apr 1997 13:08:59 -0700 (MST) Cc: mrm@Mole.ORG, freebsd-hackers@freebsd.org In-Reply-To: <335B9284.6E78@westongold.com> from "James Mansion" at Apr 21, 97 05:15:00 pm X-Mailer: ELM [version 2.4 PL24] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: owner-hackers@freebsd.org X-Loop: FreeBSD.org Precedence: bulk > And people ran various NT and W95 versions for a long time prior to > release, some very successfully, but that didn't make them perfect > either. Kernel components which sleep threads must be prepared to be reentered by those threads when the execution context is reused by some other user space call or by a 'ring 0' "daemon" of some kind which has awoken on a timer. One of the problems (at least in Win95) is that the semaphores guard on thread ID and allow reentrancy by ID, but not by other ID's. That basically means that you have to implement *real* semaphores on top of those provided by Microsoft if what you are trying to do is actually guard against reentering code (list management, etc.). The quickest way to see this is to implement a VXD with a kernel timer thread and a user service call through (that can hang waiting for resource) to the VXD, and note that the timer runs on the user's thread. Terry Lambert terry@lambert.org --- Any opinions in this posting are my own and not those of my present or previous employers.