Linux-Kernel
/proc/interrupts 中的非數字 IRQ 是什麼?
cat /proc/interrupts
顯示一堆 IRQ,例如NMI
和LOC
。輸出中的每行註釋給出了清晰的解釋,但如果它們沒有數字 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
.