Hello,

As confirmed by Udo, I thought the vector of an IO-APIC pin is the one used to index idt, which is from 0x20-0x37. But I just checked the idt using kernel debugger and found that many entries between 0x20 and 0x37 are marked as reserved. Several defined ones can be found in entry.S. However, I noticed that 48 entries from 0x50 to 0x7f are actually defined. Are those for the 48 pins in my two IO-APICs?  Why have the vectors changed? And where can I found the corresponding CPU interrupt handlers?

Another thing that confuses me is that th function  "irq_interrupt" in file "dirq-ia32-ux.cpp". Where does it get called? I found one call site in entry.S, which seems to use an interrupt number (int - 0x20) as the first parameter. But why this number is used as a pointer that pointing to an irq object?

I must have missed something. I would really appreciate it if someone can answer my questions.  Thanks.

Best,
Chen