linux内核irq,linux-kernel – do_IRQ中的中断向量和irq映射
我正在使用
Linux 3.6.0的x86系統(tǒng).對于某些實驗,我需要知道IRQ如何映射到矢量.我從很多書中學到說,向量0x0到0x20用于陷阱和異常,從向量0x20開始用于外部器件中斷.這也在源代碼Linux / arch / x86 / include / asm / irq_vectors.h中定義
unsigned int __irq_entry do_IRQ(struct pt_regs *regs)
{
struct pt_regs *old_regs = set_irq_regs(regs);
/* high bit used in ret_from_ code */
unsigned vector = ~regs->orig_ax;
unsigned irq;
...
irq = __this_cpu_read(vector_irq[vector]); // get the IRQ from the vector_irq
// print out the vector_irq
prink("cpu-ID:%d,vector: 0x%x - irq: %d",smp_processor_id(),vector,irq);
}
通過使用printk檢測代碼,我得到的vector-irq映射如下所示,我不知道為什么這是映射.我雖然映射應該是(irq 0x20 = vector),但似乎并非如此.
from: Linux/arch/x86/include/asm/irq_vector.h
* Vectors 0 ... 31 : system traps and exceptions - hardcoded events
* Vectors 32 ... 127 : device interrupts = 0x20 – 0x7F
但我的輸出是:
cpu-ID=0.Vector=0x56 (irq=58)
cpu-ID=0.Vector=0x66 (irq=59)
cpu-ID=0.Vector=0x76 (irq=60)
cpu-ID=0.Vector=0x86 (irq=61)
cpu-ID=0.Vector=0x96 (irq=62)
cpu-ID=0.Vector=0xa6 (irq=63)
cpu-ID=0.Vector=0xb6 (irq=64)
順便說一下,這些irq是我的10GB以太網(wǎng)卡,啟用了MSIX.誰能給我一些關于為什么這是映射的想法?制作這種映射的規(guī)則是什么?
謝謝.
威廉
總結(jié)
以上是生活随笔為你收集整理的linux内核irq,linux-kernel – do_IRQ中的中断向量和irq映射的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓linux环境 查看进程,查看基于A
- 下一篇: linux内核支持utf8,Linux对