Subject: Re: splusb()
To: Garrett D'Amore <garrett_damore@tadpole.com>
From: SODA Noriyuki <soda@sra.co.jp>
List: tech-kern
Date: 05/05/2006 16:28:30
>>>>> On Thu, 04 May 2006 10:27:04 -0700,
"Garrett D'Amore" <garrett_damore@tadpole.com> said:
> The splxxx stuff is single processor legacy from the idea that you could
> just set the processor mask and that this was sufficient.
> If we want to support true kernel SMP ever, then we need to go to
> mutexes or something like them.
That depends on what "proper" means. :)
spl + spinclock can be used to support fine grained SMP system too,
just like what is written in Curt Schimmel's "UNIX Systems for Modern
Architectures: Symmetric Multiprocessing and Caching for Kernel
Programmers"
> As far as performance goes, mutexes are not likely to be very different
> if design so that on uni processor platforms acquiring a mutex that has
> an "interrupt cookie" set for it (i.e. a mutex that protects data
> accessed in an ISR) degenerates into just doing the splxxx thing
> internally.
Yes. The problem is that FreeBSD and Solaris treat interrupt handlers
as threads, thus the handling is more expensive.
The threading model itself is beautiful, though.
--
soda