/proc/interrupts 中的非数字 IRQ 是什么?

/proc/interrupts 中的非数字 IRQ 是什么?

cat /proc/interrupts显示了一堆 IRQ,例如NMILOC。输出中的每行注释给出了清晰的解释,但如果它们没有数字 IRQ 编号,那么 x86 CPU 如何根据中断描述符表中的条目响应它们?

答案1

非数字条目/proc/interrupts对应于特定于架构的、与设备无关的中断。

在 x86 上,IDT 布局描述于arch/x86/include/asm/irq_vectors.h:

  • 矢量 0 ... 31:系统陷阱和异常 - 硬编码事件
  • 矢量 32 ... 127:设备中断
  • Vector 128:遗留 int80 系统调用接口
  • 矢量 129 ... LOCAL_TIMER_VECTOR-1
  • 矢量 LOCAL_TIMER_VECTOR ... 255 :特殊中断

特定于架构的中断由 0 到 31 和 129 到 255 的 IDT 条目处理,本地定时器中断是后一个范围中的第一个中断。所以当你在 中看到 0 时/proc/interrupts,它是 IDT 条目 32;当你看到 NMI 时,它是条目 2;等等。IDT本身设置在arch/x86/kernel/idt.c

相关内容