Date: Mon, 27 Mar 2000 13:54:15 -0800 From: Alfred Perlstein <bright@wintelcom.net> To: Matthew Dillon <dillon@apollo.backplane.com> Cc: Daniel Eischen <eischen@vigrid.com>, Nate Williams <nate@yogotech.com>, nms@otdel-1.org, freebsd-current@FreeBSD.ORG Subject: Re: Is there spinlocks/semaphores available for drivers? Message-ID: <20000327135414.M21029@fw.wintelcom.net> In-Reply-To: <200003272008.MAA42799@apollo.backplane.com>; from dillon@apollo.backplane.com on Mon, Mar 27, 2000 at 12:08:33PM -0800 References: <Pine.SUN.3.91.1000327142313.16202A@pcnet1.pcnet.com> <200003272008.MAA42799@apollo.backplane.com>
next in thread | previous in thread | raw e-mail | index | archive | help
* Matthew Dillon <dillon@apollo.backplane.com> [000327 12:36] wrote: > > : > :There's a paper that describes how Solaris transitioned from spl()s > :to mutexes. ISTR they created one mutex for each splxxx. I'll have > :to find this and re-read it. > : > :-- > :Dan Eischen > > I think we're using a slightly different mechanism... our spl*()'s > are actually interrupt bit masks. That is, any single spl*() call > may mask several interrupt sources. Turning a mask with five or six > bits set in it into a set of mutexes is a very expensive proposition. I think you're thinking this: /-----int 1 spl -<---> int 2 \-----int 3 spl messing with several mutexes, instead consider: int 1 >---\ int 2 >---->-- splmutex int 3 >---/ Where a single mutex is shared by several interrupts. There's also this to consider: proc0: splaaa(); splbbb(); proc1: splbbb(); splaaa(); deadlock. Which needs to be worked out somehow. -- -Alfred Perlstein - [bright@wintelcom.net|alfred@freebsd.org] 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?20000327135414.M21029>