Subject: Re: Using splsched()
To: Paul Kranenburg <pk@cs.few.eur.nl>
From: Paul Kranenburg <pk@cs.few.eur.nl>
List: tech-kern
Date: 11/13/1997 00:41:41
> splsched() is defined in spl(9) to do just that: protecting the sleep
> queues. The only deviation from spl(9) is that might not retain its
> position in the `priority order' list. In particular, it may represent
> a lower interrupt priority than splstatclock(), which means that in
> some spots the various sleep()/wakeup() routines need to raise to
> splstatclock() explicitly when accessing process scheduling data
> and queues.
> 
> The latter also implies that in fact MIN(splsched,splstatclock) is
> the interrupt level that bars any path to wakeup() in interrupt handlers.
> 
> Given that splsched() can be defined as splhigh() on ports that have
> no need for it now, is this restriction a problem for any port?

So, if splstatclock() never lowers the processor priority, then this
scheme can be safely implemented. A quick inventory shows that the
following ports already do this:

	alpha
	arm32
	i386
	pc532

The m68k-based ports and the vax don't, and also do not appear to
have some sort of "splraise()" available. The sparc and hp300
have an "splraise()" but currently don't use it for splstatclock()

I don't know what these ports do:

	mips
	bebob
	powerpc

-pk