下面的这个视频解释了Linux的中断号与硬件里面中断号之间究竟是什么关系澄清关于Linux中断号的误解。
# cat /proc/interruptsCPU0 CPU1 CPU2 CPU316: 3092 2942 1436 1997 GIC 29 twd17: 10 0 0 0 GIC 34 timer31: 4 0 0 0 GIC 47 eth034: 375 0 0 0 GIC 41 mmci-pl18x (cmd)35: 22227 0 0 0 GIC 42 mmci-pl18x (pio)36: 8 0 0 0 GIC 44 kmi-pl05037: 98 0 0 0 GIC 45 kmi-pl05038: 108 0 0 0 GIC 37 uart-pl01144: 0 0 0 0 GIC 36 rtc-pl031IPI0: 0 1 1 1 CPU wakeup interruptsIPI1: 0 0 0 0 Timer broadcast interruptsIPI2: 653 682 935 364 Rescheduling interruptsIPI3: 1 2 2 1 Function call interruptsIPI4: 0 0 0 0 Single function call interruptsIPI5: 0 0 0 0 CPU stop interruptsIPI6: 0 0 0 0 IRQ work interruptsIPI7: 0 0 0 0 completion interruptsErr: 0
实验平台为ARM。视频解释上述/proc/interrupts里面的16,17,31,34,35,36,38,44等这些中断号与ARM GIC(Generic Interrupt Controller)里面硬件中断号之间的关系。
硬件的中断号我们一般称为“hwirq”,通常意味中断控制器里面哪个bit被设置了。Linux会建立Linux的IRQ号与hwirq的映射关系。
(END)
