Chapter 4. Abstraction layers

Table of Contents

Interrupt control flow
Highlevel Driver API
Highlevel IRQ flow handlers
Default flow implementations
Default flow handler implementations
Quirks and optimizations
Delayed interrupt disable
Chiplevel hardware encapsulation

There are three main levels of abstraction in the interrupt code:

  1. Highlevel driver API

  2. Highlevel IRQ flow handlers

  3. Chiplevel hardware encapsulation

Interrupt control flow

Each interrupt is described by an interrupt descriptor structure irq_desc. The interrupt is referenced by an 'unsigned int' numeric value which selects the corresponding interrupt decription structure in the descriptor structures array. The descriptor structure contains status information and pointers to the interrupt flow method and the interrupt chip structure which are assigned to this interrupt.

Whenever an interrupt triggers, the lowlevel arch code calls into the generic interrupt code by calling desc->handle_irq(). This highlevel IRQ handling function only uses desc->chip primitives which describe the control flow operation necessary for the interrupt type. These operations are calling the chip primitives referenced by the assigned chip descriptor structure.