Linux-Kernel

/proc/interrupts 中的非數字 IRQ 是什麼?

  • January 24, 2020

cat /proc/interrupts顯示一堆 IRQ,例如NMILOC。輸出中的每行註釋給出了清晰的解釋,但如果它們沒有數字 IRQ 號,x86 CPU 如何響應它們,就中斷描述符表中的條目而言?

中的非數字條目/proc/interrupts對應於特定於架構的、非設備相關的中斷。

在 x86 上,IDT 佈局描述arch/x86/include/asm/irq_vectors.h如下:

  • 向量 0 … 31:系統陷阱和異常 - 硬編碼事件
  • 向量 32 … 127:設備中斷
  • 向量 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.

引用自:https://unix.stackexchange.com/questions/539733