spl - General: Sets the processor priority to mask different
levels of interrupts
#include <machine/cpu.h>
int getspl(
void ); int splbio(
void ); int splclock(
void ); int spldevhigh(
void ); int splextreme(
void ); int splhigh(
void ); int splimp(
void ); int splnet(
void ); int splnone(
void ); int splsched(
void ); int splsoftclock(
void ); int spltty(
void ); int splvm(
void ); int splx(
int x );
Specifies a CPU priority level. This level must be a value
returned by a previous call to one of the spl routines.
The operating system supports the naming of spl routines
to indicate the associated device types. Named spl routines
make it easier to determine which routine you should
use to set the priority level for a given device type. The
following table summarizes the uses for the different spl
routines: Obtains the spl value. Masks all disk and tape
controller interrupts. Masks all hardware clock interrupts.
Masks all device and software interrupts. Blocks
against all but halt interrupts. Masks all interrupts
except for realtime devices, machine checks, and halt
interrupts. Masks all LAN hardware interrupts. Masks all
network software interrupts. Unmasks (enables) all interrupts.
Masks all scheduling interrupts (usually the hardware
clock). Masks all software clock interrupts. Masks
all tty (terminal device) interrupts. Masks all virtual
memory clock interrupts. Resets the CPU priority to the
level specified by the argument.
The binding of any spl routine with a specific CPU priority
level is highly machine dependent. With the exceptions
of the splhigh and splnone routines, knowledge of the
explicit bindings is not required to create new device
drivers. You always use splhigh to mask (disable) all
interrupts and splnone to unmask (enable) all interrupts.
Upon successful completion, each spl routine returns an
integer value that represents the CPU priority level that
existed before it was changed by a call to the specified
spl routine.
The following code fragment shows the use of spl routines
as part of a disk strategy routine:
int s;
.
.
. s = splbio(); /* Mask (disable) all disk interrupts */
.
.
. [Code to deal with data that can be modified by the
disk interrupt code]
.
.
. splx(s); /* Restore CPU priority to what it was */
spl(9r)
[ Back ] |