spl(9r)spl(9r)NAMEspl - General: Sets the processor priority to mask different levels of
interrupts
SYNOPSIS
#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 );
ARGUMENTS
Specifies a CPU priority level. This level must be a value returned by
a previous call to one of the spl routines.
DESCRIPTION
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 dif‐
ferent 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 inter‐
rupts. 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) inter‐
rupts. Masks all virtual memory clock interrupts. Resets the CPU pri‐
ority to the level specified by the argument.
NOTES
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.
RETURN VALUES
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.
EXAMPLE
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)