April 28, 2014

Doubt in Interrupt subsystem initialization.


I am trying to understand interrupts for x86 architecture, I have few doubts while checking init_IRQ() function @ arch/x86/kernel/irqinit.c.

1) init_IRQ() function is calling native_init_IRQ() function at the end. Inside native_init_IRQ() function following code is updating the IDT with interrupt array entry.

if (!test_bit(i, used_vectors))
set_intr_gate(i, interrupt[i-FIRST_EXTERNAL_VECTOR]);

I have following doubts after seeing the above code snippet.

Doubt 1) Where this interrupt array was declared/defined?
Doubt 2) While registering ISR using request_irq, how the ISR will be updated in the interrupt array?

Could you please help me to understand interrupt subsystem initialization.

Thanks in advance.

Click Here!