The Hardware part:
external I/O device:
(1) It is the interrupt source
(2) issue the interrupt request using MSI, emulation INTx message, or INTR pin to ICH.
ICH:
(1) provide the mechanism to do the interrupt routing (construct the relation between the interrupt source and the interrupt controller)of PCI devices.
(3)provide the mechanism of receiving the interrupt request form the interrupt source
(4)send the interrupt message constructed by the Redirection Table of I/O APIC to the local APIC
(5) provide the mechanism of connecting the 8259 and CPU to signal the CPU the interrupt request from the external device.
I/O APIC:
construct the relation between the IRQs of I/O APIC and the ones of 8259 and the relation between the IRQs of I/O APIC and PCI devices (The relations are recorded on the Redirection Table)
local APIC:
receives the interrupt message form I/O APIC and generates the actual interrupt to CPU
CPU:
being signaled the interrupt generating form the local APIC and executed the interrupt handler indexed by the vector.
Software part:
driver of the device:
(1) register the interrupt handler using request_irq() to OS
(2) implement the interrupt handler
OS:
(1) use the structure “irqaction” to represent the handler
(2) because the structure “irqaction” is one member of the structure “irq_desc”, use one global “irq_desc” list to manage all interrupt handlers
(3) assign one unique vector to each IRQ of I/O APIC and 8259
(4) create the interrupt gate for each vector
(5) provide the CPU with a entry point for calling interrupt handlers (do_IRQ is the entry point)
1 則留言:
Having read this I believed it was very enlightening.
I appreciate you taking the time and effort
to put this information together. I once again find myself spending a
significant amount of time both reading and posting comments.
But so what, it was still worthwhile!
my weblog windows xp registry cleaner
張貼留言