next up previous contents index
Next: 10.12.1 base_irq.h: Hardware interrupt Up: 10 Kernel Support Library: Previous: 10.11.4 phys_lmm_add: Add memory

(X86 PC) Base Environment: Interrupt Support

 

In the base environment, each hardware interrupt vector in the processor IDT points to a small assembly language stub that saves a standard trap frame (10.8.1), disables and acknowledges the hardware interrupt, and calls a designated high-level handler routine specified in the base_irq_handlers table (10.12.2). Initially, all the entries in this table point to base_irq_default_handler (10.12.5). Custom interrupt handlers can be installed by changing the appropriate entry in the table. The default action for all interrupts can be changed by overriding base_irq_default_handler.

The base environment also includes support for a single ``software interrupt.'' A software interrupt is delivered after all pending hardware interrupts have been processed but before returning from the interrupt context. A software interrupt can be posted at any time with base_irq_softint_request (10.12.7) but will only be triggered upon return from a hardware interrupt; i.e., processing of a software interrupt requested from a non-interrupt context is deferred until a hardware interrupt occurs. The software interrupt handler is base_irq_softint_handler (10.12.8) which can be replaced by a custom version provided by the kernel.





University of Utah Flux Research Group