Spl (Unix)

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

Template:Short description Template:Lowercase spl (short for set priority level, after the PDP-11 assembler instruction of the same name[1]) is the name for a collection of Unix kernel routines or macros used to change the interrupt priority level.[2][3] This was historically needed to synchronize critical sections of kernel code that should not be interrupted.[4] Newer Unix variants which support symmetric multiprocessing now mostly use mutexes for this purpose, which is a more general solution, so multiple processors can execute kernel code at the same time.[5][1]

On older PDP-11 versions of Unix, there were eight of these routines, ranging from spl0 to spl7, each corresponding to one PDP-11 interrupt priority level,[3] in addition to splx, which restores a previous priority level (returned by one of the other routines).[2] On BSD Unix and its derivatives, these are called splhigh, splserial, splsched, splclock, splstatclock, splvm, spltty, splsofttty, splnet, splbio, splsoftnet, splsoftclock, spllowersoftclock, spl0, and splx.[2]

Template:As of, the spl family of primitives is still heavily used in OpenBSD[6] and NetBSD,[7] which is evidenced by the plentiful calls to splnet() within the networking code;[6][7] whereas FreeBSD and DragonFly BSD use more modern concepts; for example, in DragonFly, LWKT tokens may be used in place of spl.

See also

References

Template:Reflist

Template:OpenBSD Template:NetBSD


Template:Asbox

  1. a b Script error: No such module "citation/CS1".
  2. a b c Script error: No such module "citation/CS1".
  3. a b Script error: No such module "citation/CS1".
  4. Script error: No such module "citation/CS1".
  5. Script error: No such module "citation/CS1".
  6. a b Cite error: Invalid <ref> tag; no text was provided for refs named o/net/if
  7. a b Cite error: Invalid <ref> tag; no text was provided for refs named n/net/if