spl (Unix)

spl (förkortning av set priority level , efter PDP-11 assembler -instruktionen med samma namn) är namnet på en samling Unix- kärnrutiner eller makron som används för att ändra avbrottsprioritetsnivån . Detta behövdes historiskt för att synkronisera kritiska delar av kärnkoden som inte bör avbrytas. Nyare Unix-varianter som stöder symmetrisk multiprocessing använder nu oftast mutexes för detta ändamål, vilket är en mer generell lösning, så flera processorer kan köra kärnkod samtidigt.

På äldre PDP-11-versioner av Unix fanns det åtta av dessa rutiner, från spl0 till spl7 , var och en motsvarade en PDP-11-avbrottsprioritetsnivå, förutom splx , som återställer en tidigare prioritetsnivå (återlämnad av en av de andra rutiner). På BSD Unix och dess derivat kallas dessa splhigh , splserial , splsched , splclock , splstatclock , splvm , spltty , splsofttty , splnet , splbio , splsoftnet , splsoftclock , spllowersoftclock , splx0 och splx0 .

Från och med mars 2019 används spl-familjen av primitiva fortfarande flitigt i OpenBSD och NetBSD , vilket bevisas av de många anrop till splnet() i nätverkskoden; FreeBSD och DragonFly BSD använder mer moderna koncept ; till exempel, i DragonFly kan LWKT-tokens användas i stället för spl.

Se även