In continuation of the previous text第10章:中断处理-12: Interrupt Sharing, let's GO ahead.
The /proc Interface and Shared Interrupts
Installing shared handlers in the system doesn’t affect /proc/stat, which doesn’t even know about handlers. However, /proc/interrupts changes slightly.
All the handlers installed for the same interrupt number appear on the same line of /proc/interrupts. The following output (from an x86_64 system) shows how shared interrupt handlers are displayed:
系统中安装共享中断处理程序不会影响 /proc/stat—— 该文件甚至不记录中断处理程序的相关信息。但 /proc/interrupts 的输出会发生轻微变化。
为同一个中断号注册的所有处理程序,会显示在 /proc/interrupts 的同一行中。以下是来自 x86_64 系统的输出示例,展示了共享中断处理程序的显示方式:
CPU0
0: 892335412 XT-PIC timer
1: 453971 XT-PIC i8042
2: 0 XT-PIC cascade
5: 0 XT-PIC libata, ehci_hcd
8: 0 XT-PIC rtc
9: 0 XT-PIC acpi
10: 11365067 XT-PIC ide2, uhci_hcd, uhci_hcd, SysKonnect SK-98xx, EMU10K1
11: 4391962 XT-PIC uhci_hcd, uhci_hcd
12: 224 XT-PIC i8042
14: 2787721 XT-PIC ide0
15: 203048 XT-PIC ide1
NMI: 41234
LOC:892193503
ERR: 102
MIS: 0
This system has several shared interrupt lines.
IRQ 5 is used for the serial ATA and IEEE 1394 controllers;
IRQ 10 has several devices, including an IDE controller, two USB controllers, an Ethernet interface, and a sound card;
IRQ 11 also is used by two USB controllers.
该系统存在多条共享中断线:
-
IRQ 5 被串行 ATA(libata)和 IEEE 1394 控制器(ehci_hcd)共享;
-
IRQ 10 被多个设备共享,包括 IDE 控制器(ide2)、两个 USB 控制器(uhci_hcd)、以太网接口(SysKonnect SK-98xx)和声卡(EMU10K1);
-
IRQ 11 被两个 USB 控制器(uhci_hcd)共享。
补充说明:
-
/proc/interrupts字段解读-
第一列:中断号(IRQ);
-
中间列(如 CPU0):对应 CPU 处理该中断的累计次数(多 CPU 系统会显示多个 CPU 列);
-
倒数第二列:中断控制器类型(如 XT-PIC,传统可编程中断控制器);
-
最后一列:共享该中断的设备 / 驱动名称列表(以逗号分隔)。
-
-
共享中断计数的特点
对于共享中断,
/proc/interrupts中的计数是该中断线的总触发次数,而非单个设备的中断次数。内核不会单独统计每个共享设备的中断次数,因此无法通过该文件判断某一设备的具体中断频率。 -
/proc/stat与中断的关联/proc/stat仅记录系统级的中断统计(如intr字段记录所有中断的总次数),不区分中断号和处理程序,因此共享中断的安装或卸载不会改变其输出内容。 -
共享中断的调试意义
通过
/proc/interrupts可快速排查共享中断的问题:-
若某共享中断的计数异常飙升,可能是某设备故障导致频繁触发中断,影响其他共享设备;
-
若某设备应产生中断但对应 IRQ 计数无变化,可能是中断共享配置错误(如未加
SA_SHIRQ标志)或硬件未正确触发中断。
-

被折叠的 条评论
为什么被折叠?



