我正在检查我的 vmware VM(Ubuntu 16.10)中的 IOAPIC 设置。这是我从我自己的转储 IOAPIC 寄存器和 /proc/interrupts 的代码中得到的。
Reg[0] = 0x00000000
Reg[1] = 0x00170011
Reg[2] = 0x00000000
Redir[12] = 2000000000000e4: vec = e4, d_mode = 0, dest_mode = 0, pin_pol = 0, tr_mode = 0
Redir[14] = 30: vec = 30, d_mode = 0, dest_mode = 0, pin_pol = 0, tr_mode = 0
Redir[16] = 33: vec = 33, d_mode = 0, dest_mode = 0, pin_pol = 0, tr_mode = 0
Redir[18] = 34: vec = 34, d_mode = 0, dest_mode = 0, pin_pol = 0, tr_mode = 0
Redir[1a] = 35: vec = 35, d_mode = 0, dest_mode = 0, pin_pol = 0, tr_mode = 0
Redir[1e] = 37: vec = 37, d_mode = 0, dest_mode = 0, pin_pol = 0, tr_mode = 0
Redir[20] = 38: vec = 38, d_mode = 0, dest_mode = 0, pin_pol = 0, tr_mode = 0
Redir[22] = a039: vec = 39, d_mode = 0, dest_mode = 0, pin_pol = 1, tr_mode = 1
Redir[24] = 3a: vec = 3a, d_mode = 0, dest_mode = 0, pin_pol = 0, tr_mode = 0
Redir[26] = 3b: vec = 3b, d_mode = 0, dest_mode = 0, pin_pol = 0, tr_mode = 0
Redir[28] = 2000000000000a4: vec = a4, d_mode = 0, dest_mode = 0, pin_pol = 0, tr_mode = 0
Redir[2a] = 3d: vec = 3d, d_mode = 0, dest_mode = 0, pin_pol = 0, tr_mode = 0
Redir[2c] = 3e: vec = 3e, d_mode = 0, dest_mode = 0, pin_pol = 0, tr_mode = 0
Redir[2e] = 3f: vec = 3f, d_mode = 0, dest_mode = 0, pin_pol = 0, tr_mode = 0
Redir[30] = 30000000000a074: vec = 74, d_mode = 0, dest_mode = 0, pin_pol = 1, tr_mode = 1
Redir[32] = 30000000000a035: vec = 35, d_mode = 0, dest_mode = 0, pin_pol = 1, tr_mode = 1
Redir[36] = 10000000000a025: vec = 25, d_mode = 0, dest_mode = 0, pin_pol = 1, tr_mode = 1
t@t-virtual-machine:~/test/process$ cat /proc/interrupts | grep -i "IO-APIC"
0: 16 0 0 0 IO-APIC 2-edge timer
1: 10 4431 1099 0 IO-APIC 1-edge i8042
8: 1 0 0 0 IO-APIC 8-edge rtc0
9: 0 0 0 0 IO-APIC 9-fasteoi acpi
12: 16 0 2063 0 IO-APIC 12-edge i8042
14: 0 0 0 0 IO-APIC 14-edge ata_piix
15: 0 0 0 0 IO-APIC 15-edge ata_piix
16: 218 0 0 498 IO-APIC 16-fasteoi vmwgfx, snd_ens1371
17: 9518 34200 0 10249 IO-APIC 17-fasteoi ioc0
19: 81 4252 0 2027 IO-APIC 19-fasteoi ens33
这两个输出至少在向量场中是不同的。
我自己的代码通过写入 ioapic_base 和读取 (ioapci_base + 0x10) 来转储 IOAPIC 寄存器。
你能帮我检查一下为什么会有差异吗?谢谢,-陶