<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.sarg.dev/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=2601%3A1C0%3A7182%3AE730%3AAB3%3A3566%3ADD74%3AD9A</id>
	<title>Vero - Wikipedia - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.sarg.dev/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=2601%3A1C0%3A7182%3AE730%3AAB3%3A3566%3ADD74%3AD9A"/>
	<link rel="alternate" type="text/html" href="https://wiki.sarg.dev/index.php/Special:Contributions/2601:1C0:7182:E730:AB3:3566:DD74:D9A"/>
	<updated>2026-08-14T14:42:58Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://wiki.sarg.dev/index.php?title=Spl_(Unix)&amp;diff=400526</id>
		<title>Spl (Unix)</title>
		<link rel="alternate" type="text/html" href="https://wiki.sarg.dev/index.php?title=Spl_(Unix)&amp;diff=400526"/>
		<updated>2023-10-05T18:14:22Z</updated>

		<summary type="html">&lt;p&gt;2601:1C0:7182:E730:AB3:3566:DD74:D9A: Typo fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Short description|Unix interrupt priority control commands}}&lt;br /&gt;
{{lowercase}}&lt;br /&gt;
&#039;&#039;&#039;spl&#039;&#039;&#039; (short for &#039;&#039;&#039;set priority level&#039;&#039;&#039;, after the [[PDP-11]] [[Assembly language|assembler]] instruction of the same name&amp;lt;ref name=&amp;quot;smp&amp;quot;&amp;gt;{{citation|last1=Lehey|first1=Greg|title=Improving the FreeBSD SMP implementation|url=http://www.lemis.com/grog/SMPng/USENIX/|date=2001|access-date=11 May 2018}}&amp;lt;/ref&amp;gt;) is the name for a collection of [[Unix]] kernel [[Subroutine|routines]] or [[Macro (computer science)|macros]] used to change the [[interrupt priority level]].&amp;lt;ref name=&amp;quot;man page&amp;quot;&amp;gt;{{cite web|title=spl(9) - OpenBSD manual pages|url=https://man.openbsd.org/spl.9|access-date=11 May 2018}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;lions p.43&amp;quot;&amp;gt;{{cite book|last1=Lions|first1=John|title=[[Lions&#039; Commentary on UNIX 6th Edition, with Source Code]]|page=43|date=1976}}&amp;lt;/ref&amp;gt; This was historically needed to synchronize [[critical section]]s of kernel code that should not be interrupted.&amp;lt;ref&amp;gt;{{cite book|last1=Lions|first1=John|title=[[Lions&#039; Commentary on UNIX 6th Edition, with Source Code]]|page=41|date=1976}}&amp;lt;/ref&amp;gt; Newer Unix variants which support [[symmetric multiprocessing]] now mostly use [[Lock (computer science)|mutexes]] for this purpose, which is a more general solution, so multiple processors can execute kernel code at the same time.&amp;lt;ref&amp;gt;{{cite book|last1=McKusick|first1=Marshall Kirk|collaboration=authors|title=The Design and Implementation of the FreeBSD Operating System|publisher=Addison-Wesley|page=93|date=2004}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;smp&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On older PDP-11 versions of Unix, there were eight of these routines, ranging from &amp;lt;code&amp;gt;spl0&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;spl7&amp;lt;/code&amp;gt;, each corresponding to one PDP-11 interrupt priority level,&amp;lt;ref name=&amp;quot;lions p.43&amp;quot; /&amp;gt; in addition to &amp;lt;code&amp;gt;splx&amp;lt;/code&amp;gt;, which restores a previous priority level (returned by one of the other routines).&amp;lt;ref name=&amp;quot;man page&amp;quot; /&amp;gt; On [[Berkeley Software Distribution|BSD Unix]] and its derivatives, these are called &amp;lt;code&amp;gt;splhigh&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;splserial&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;splsched&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;splclock&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;splstatclock&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;splvm&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;spltty&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;splsofttty&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;splnet&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;splbio&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;splsoftnet&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;splsoftclock&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;spllowersoftclock&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;spl0&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;splx&amp;lt;/code&amp;gt;.&amp;lt;ref name=&amp;quot;man page&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{As of|2019|03}}, the spl family of primitives is still heavily used in [[OpenBSD]]&amp;lt;ref name=&amp;quot;o/net/if&amp;quot;/&amp;gt; and [[NetBSD]],&amp;lt;ref name=&amp;quot;n/net/if&amp;quot;/&amp;gt; which is evidenced by the plentiful calls to &amp;lt;code&amp;gt;splnet()&amp;lt;/code&amp;gt; within the networking code;&amp;lt;ref name=&amp;quot;o/net/if&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;n/net/if&amp;quot;/&amp;gt; whereas [[FreeBSD]] and [[DragonFly BSD]] use more modern concepts; for example, in DragonFly, [[Serializing tokens|LWKT tokens]] may be used in place of spl.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[IRQL_(Windows)|IRQL]]&lt;br /&gt;
* [[Interrupt]]&lt;br /&gt;
* [[Interrupt priority level]]&lt;br /&gt;
* [[Programmable Interrupt Controller]]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{reflist&lt;br /&gt;
|refs =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name = &amp;quot;o/net/if&amp;quot; &amp;gt;{{cite web&lt;br /&gt;
|url = http://bxr.su/o/sys/net/if.c&lt;br /&gt;
|title = /sys/net/if.c&lt;br /&gt;
|website = BSD Cross Reference&lt;br /&gt;
|publisher = [[OpenBSD]]&lt;br /&gt;
|quote = s = splnet();&lt;br /&gt;
|date = 2019-03-01&lt;br /&gt;
|access-date = 2019-03-05&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name = &amp;quot;n/net/if&amp;quot; &amp;gt;{{cite web&lt;br /&gt;
|url = http://bxr.su/n/sys/net/if.c&lt;br /&gt;
|title = /sys/net/if.c&lt;br /&gt;
|website = BSD Cross Reference&lt;br /&gt;
|publisher = [[NetBSD]]&lt;br /&gt;
|quote = s = splnet();&lt;br /&gt;
|date = 2019-03-01&lt;br /&gt;
|access-date = 2019-03-05&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{OpenBSD}}&lt;br /&gt;
{{NetBSD}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Interrupts]]&lt;br /&gt;
[[Category:Unix]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Unix-stub}}&lt;/div&gt;</summary>
		<author><name>2601:1C0:7182:E730:AB3:3566:DD74:D9A</name></author>
	</entry>
</feed>