Skip to main content

handle_interrupt

Function handle_interrupt 

Source
pub fn handle_interrupt()
Expand description

Called from the IDT AHCI IRQ handler.

Reads HBA_IS to find which ports raised an interrupt, reads and clears PxIS per port, then signals the per-port WaitQueue so that any task blocked in submit_cmd can resume.

ยงSafety of concurrent access

All per-port statics (PORT_SLOT0_DONE, PORT_SLOT0_ERROR, PORT_WQ) are accessed via atomics or briefly-held SpinLocks (which disable IRQs). The IRQ handler itself is not re-entrant (x86 APIC level-triggered delivery ensures this for the same vector).