Re: [PATCH] 2.4.0-prerelease: preemptive kernel.

Andi Kleen
2001-01-04T08:11:40Z

On Thu, Jan 04, 2001 at 08:35:02AM +0100, Daniel Phillips wrote:
> A more ambitious way to proceed is to change spinlocks so they can sleep
> (not in interrupts of course). There would not be any extra overhead

Imagine what happens when a non sleeping spinlock in a interrupt waits
for a "sleeping spinlock" somewhere else...
I'm not sure if this is a good idea. Sleeping locks everywhere would
imply scheduled interrupts, which are nasty.

I think a better way to proceed would be to make semaphores a bit more
intelligent and turn them into something like adaptive spinlocks and use
them more where appropiate (currently using semaphores usually causes
lots of context switches where some could probably be avoided). Problem
is that for some cases like your producer-consumer pattern (which has been
used previously in unreleased kernel code BTW) it would be a pessimization
to spin, so such adaptive locks would probably need a different name.

-Andi