Processing an Interrupt

A specific sequence of events takes place when an interrupt is processed. You should write the ISR and IST for your native device driver with the following sequence of events in mind:

  1. When an interrupt occurs, the kernel jumps to the exception handler.
  2. The exception handler disables all interrupts and calls the appropriate ISR for the physical interrupt line.
  3. The ISR returns a logical interrupt, in the form of an interrupt identifier, to the interrupt handler.
  4. The interrupt handler re-enables all interrupts, with the exception of the current interrupt, and signals the appropriate IST.
  5. The IST calls PDD routines to access the hardware and finish processing the logical interrupt.
  6. The IST calls the InterruptDone function.
  7. The interrupt handler re-enables the current interrupt and calls the OEMInterruptDone function in the OAL.