Interrupt Handling
Other versions of this page are also available for the following:
8/28/2008
When an interrupt is processed, a specific sequence of events takes place. You should write the interrupt service request (ISR) and interrupt service thread (IST) for your device driver with the following sequence of events in mind:
- When an interrupt occurs, the microprocessor jumps to the kernel exception handler.
- The exception handler disables all interrupts of an equal and lower priority at the microprocessor, and then calls the appropriate ISR for the physical interrupt request (IRQ).
- The ISR returns a logical interrupt, in the form of an interrupt identifier, to the interrupt handler and typically masks the board-level device interrupt.
- The interrupt handler re-enables all interrupts at the microprocessor, with the exception of the current interrupt, which is left masked at the board, and then signals the appropriate IST event.
- The IST is scheduled, services the hardware, and then finishes processing the interrupt.
- The IST calls the InterruptDone function, which in turn calls the OEMInterruptDone function in the OAL.
OEMInterruptDone re-enables the current interrupt.
In This Section
- Interrupt Handling Overview
Describes, in detail, how Windows Embedded CE handles interrupts.
- Servicing Interrupts
Describes how to service interrupts.
- Masking Interrupts
Provides information about masking interrupts.
- Handling Nested Interrupts
Describes how Windows Embedded CE handles nested interrupts.
- Handling Shared Interrupts
Describes how Windows Embedded CE handles shared interrupts.
- Configuring, Registering, and Deregistering an Interrupt Handler
Describes how to configure an interrupt handler, how to register an interrupt handler, and how to deregister an interrupt handler.
Related Sections
- Kernel Overview
Provides an overview of the Windows Embedded CE kernel.
- Real-Time Priority System
Describes the real-time priority system, the priority levels associated with various operating system threads, and the thread priority levels available for other threads.