Skip site navigation (1)Skip section navigation (2)
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>