Flow Handling

Before discussing how flow handlers are implemented, we need to introduce the type used for them. irq_flow_handler_t specifies the signature of IRQ flow handler functions:

typedef void fastcall (*irq_flow_handler_t)(unsigned int irq, struct irq_desc *desc);

Flow handlers get both the IRQ number and a pointer to the irq_handler instance that is responsible for the interrupt. This information can then be used to implement proper flow handling.

Recall that different hardware requires different approaches to flow handling — edge- and level-triggering need to be dealt with differently, for instance. The kernel provides several default flow handlers for various types. They have one thing in common: Every flow handler is responsible to call the high-level ISRs once its work is finished. handle_iRQ_event is responsible to activate the high-level handlers; this is discussed this in Section 14.1.7. For now, let us examine how flow handling is performed.

Continue reading here: Edge Triggered Interrupts

Was this article helpful?

0 0