Subject: IPL_* and IST_* constants
To: None <tech-kern@NetBSD.ORG>
From: Charles M. Hannum <mycroft@MIT.EDU>
List: tech-kern
Date: 03/18/1996 07:51:14
The following specifies a standard that ports using the common ISA and
EISA code must follow.

The following constants must be defined in <machine/psl.h>, if _KERNEL
is defined:

IPL_NONE
IPL_BIO
IPL_NET
IPL_TTY
IPL_IMP
IST_PULSE
IST_EDGE
IST_LEVEL

In addition, the following constants may be defined on some ports, as
necessary for the particular implementation of the machine-dependent
code:

IPL_CLOCK
IST_NONE

All other symbols beginning with `IPL_' or `IST_' are reserved for
future allocation.

Symbols beginning with `IPL_' are `interrupt priority levels', and are
used to specify to the *_intr_establish() routines what spl level
should be asserted when an interrupt handler is called.  IPL_NONE
means that no spl level is asserted; the interrupt is blocked only
against itself.  All other constants are named `IPL_FOO', where the
corresponding spl level would be asserted manually with `splfoo()'.

Symbols beginning with `IST_' are `interrupt sharing types', and are
used to specify to the *_intr_establish() routines how the IRQ is
triggered.  An IRQ may not be shared between handlers using different
sharing types, and no two handlers of type IST_PULSE may share an IRQ.
Implementations of *_intr_establish() must reject attempts to violate
these rules.