下面的這個視頻解釋了Linux的中斷號與硬件裏面中斷號之間究竟是什麼關係澄清關於Linux中斷號的誤解。
# cat /proc/interrupts
CPU0 CPU1 CPU2 CPU3
16: 3092 2942 1436 1997 GIC 29 twd
17: 10 0 0 0 GIC 34 timer
31: 4 0 0 0 GIC 47 eth0
34: 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-pl050
37: 98 0 0 0 GIC 45 kmi-pl050
38: 108 0 0 0 GIC 37 uart-pl011
44: 0 0 0 0 GIC 36 rtc-pl031
IPI0: 0 1 1 1 CPU wakeup interrupts
IPI1: 0 0 0 0 Timer broadcast interrupts
IPI2: 653 682 935 364 Rescheduling interrupts
IPI3: 1 2 2 1 Function call interrupts
IPI4: 0 0 0 0 Single function call interrupts
IPI5: 0 0 0 0 CPU stop interrupts
IPI6: 0 0 0 0 IRQ work interrupts
IPI7: 0 0 0 0 completion interrupts
Err: 0
實驗平臺爲ARM。視頻解釋上述/proc/interrupts裏面的16,17,31,34,35,36,38,44等這些中斷號與ARM GIC(Generic Interrupt Controller)裏面硬件中斷號之間的關係。
硬件的中斷號我們一般稱爲“hwirq”,通常意味中斷控制器裏面哪個bit被設置了。Linux會建立Linux的IRQ號與hwirq的映射關係。
(END)
別忘了點“在看”鼓勵哦~