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