In UNIX, interrupt handling routines are initiated at the same priority as the interrupt priority.
This means that during the handling of the interrupt, a second interrupt from a device of the same priority class will be delayed until the processor priority is reduced, either by the execution of one of the “spl” procedures, which are intended for just this purpose (see lines 1293 to 1315), or by reloading the processor status word e.g. upon returning from the interrupt.
During interrupt handling, the processor priority may be raised temporarily to protect the integrity of certain operations. For instance, character oriented devices such as the paper tape reader/punch or the line printer interrupt at level four. Their interrupt handlers call “getc” (0930) or “putc” (0967), which raise the processor priority temporarily to level five, while the character buffer queues are manipulated.
The interrupt handler for the console teletype makes use of a “timeout” facility. This involves a queue which is also manipulated by the clock interrupt handler, which runs at level six. To prevent possible interference, the “timeout” procedure (3835) runs at level seven (the highest possible level).
Usually it does not make sense to run an interrupt handler at a processor priority lower than the interrupt priority, for this would then risk a second interrupt of the same type, even from the same device, before completion of the processing of the first interrupt. This likely to be at best inconvenient and at worst disastrous. However the clock interrupt handler, which once per second has a lot of extra work to do, does exactly this.