next up previous contents index
Next: 6.15.1 osenv_intr_disable: prevent interrupts Up: 6 OSKit Device Driver Previous: 6.14.3 osenv_io_free: Release a

6.15 Hardware Interrupts

Shared interrupts are supported, as long as OSENV_IRQ_SHAREABLE is requested by all devices wishing to use the interrupt.

In a given driver environment in this framework, there are only two ``interrupt levels'': enabled and disabled. In the default case in which all device drivers of all types are linked together into one large driver environment in an OS kernel, this means that whenever one driver masks interrupts, it masks all device interrupts in the system.gif

However, an OS can implement multiple interrupt priority levels, as in BSD or Windows NT, if it so desires, by creating separate ``environments'' for different device drivers. For example, if each driver is built into a separate, dynamically-loadable module, then the osenv_intr_ calls in different driver modules could be resolved by the dynamic loader to spl-like routines that switch between different interrupt priority levels. For example, the osenv_intr_disable call in network drivers may resolve to splnet, whereas the same call in a disk driver may be mapped to splbio instead.





University of Utah Flux Research Group