Subject: Re: splserial() higher than splhigh()?
To: David Querbach <querbach@realtime.bc.ca>
From: Colin Cholley <colin.cholley@IPricot.com>
List: tech-kern
Date: 01/30/2001 10:41:02
David Querbach wrote:
> >From spl(9):
> splhigh() blocks all hard and soft interrupts. It is used for
> code that cannot tolerate any interrupts, like
> hardware context switching code and the ddb(4)
> in-kernel debugger.
> splserial() blocks hard interrupts from serial interfaces. Code
> running at this level may not access the tty
> subsystem.
>
> >From sys/arch/i386/include/intr.h (and other similiar):
> #define IPL_HIGH 1 /* everything */
> #define IPL_SERIAL 0 /* serial */
>
> Which is correct?
I believe the extremely lousy hardware in many serial controllers
insists on avoiding almost any latency; thus its higher priority.
OTOH feeding the controller is a *very* short interrupt, so splhigh
never suffers much latency from it. The expensive work is done at
spltty or splsoftserial (? probably; below splhigh anyway).
Have you done any measurements on various ipl latencies? This could
be interesting.
This is all from memory/expectations... anyone with real knowledge
care to comment?
--
Colin
"Ten minutes later, drifting idly through a cloud,
he got a large and extremely disreputable cocktail party
in the small of the back." -- D. Adams