有人可以帮我分析我的文件中输出的数据吗/proc/interrupts
?
$ cat /proc/interrupts
CPU0 CPU1
0: 22 0 IR-IO-APIC 2-edge timer
1: 2 0 IR-IO-APIC 1-edge i8042
8: 1 0 IR-IO-APIC 8-edge rtc0
9: 0 0 IR-IO-APIC 9-fasteoi acpi
12: 4 0 IR-IO-APIC 12-edge i8042
120: 0 0 DMAR-MSI 0-edge dmar0
122: 0 0 IR-PCI-MSI 327680-edge xhci_hcd
123: 25164 5760490 IR-PCI-MSI 1048576-edge enp2s0
124: 17 5424414 IR-PCI-MSI 524288-edge amdgpu
到目前为止我已经编译了...
- 第 1 列:IRQ 编号
- 第 2 列和第 3 列:每个 CPU 的中断数(列数取决于系统有多少个 CPU)
- 第 4 列:中断类型
- 第 5 列:???
- 第 6 列:设备名称
我感兴趣的是找出第 5 列包含什么数据,即524288-edge
,以及是否有人可以分解该数字代表什么。通过在线研究,我只看到中断类型列后跟设备名称,此列数据始终缺失。这仅仅是有关中断类型的更多信息吗?
答案1
我仍在探索这个区域。
这指向“边缘”,意味着中断类型是“边缘下降”中断: https://www.raspberrypi.org/forums/viewtopic.php?t=20931
看看我的,我有“18 个边缘”,并且与 GPIO-18 相关,我预计中断会在我的情况下出现:
CPU0 CPU1 CPU2 CPU3
172: 1387 0 0 0 pinctrl-bcm2835 18 Edge lirc_rpi
答案2
\/ ... linux global irq number
\/ ... number of occured irqs on CPU 0
\/ ... number of occured irqs on CPU 1
\/ ... irq chip receiving the irq
\/ ... hw irq number and type of irq
\/ ... assigned action of irq
(-> irq handler inside a driver, can also be assigned to more then just one handler / driver)
cat /proc/interrupts
CPU0 CPU1
0: 22 0 IR-IO-APIC 2-edge timer
1: 2 0 IR-IO-APIC 1-edge i8042
8: 1 0 IR-IO-APIC 8-edge rtc0
9: 0 0 IR-IO-APIC 9-fasteoi acpi
12: 4 0 IR-IO-APIC 12-edge i8042
120: 0 0 DMAR-MSI 0-edge dmar0
122: 0 0 IR-PCI-MSI 327680-edge xhci_hcd
123: 25164 5760490 IR-PCI-MSI 1048576-edge enp2s0
124: 17 5424414 IR-PCI-MSI 524288-edge amdgpu
/sys/kernel/irq/<每个 irq 的数量>/<信息文件>中也包含相同的信息,但更适合机器阅读。
如果内核使用 CONFIG_IRQ_DOMAIN_DEBUG=y 进行编译,则可以检索更多 irq 信息
这里对 Linux IRQ 进行了很好的介绍: https://www.youtube.com/watch?v=LOCsN3V1ECE