/* IPI vectors for APIC spurious and error interrupts */
alloc_intr_gate(SPURIOUS_APIC_VECTOR, spurious_interrupt);
alloc_intr_gate(ERROR_APIC_VECTOR, error_interrupt);
/* Performance monitoring interrupts: */
# ifdef CONFIG_PERF_EVENTS
alloc_intr_gate(LOCAL_PENDING_VECTOR, perf_pending_interrupt);
# endif
#endif
}
我们可以看到这些中断初始化很特别,就像我们设置的陷阱门系统调用一样,将中断处理函数直接放在中断门得指向地址,这样只要中断到来,一旦通过中断门将直接跳像中断处理函数,而忽略了irq_desc部分,不需要考虑怎么触发,不需要考虑怎么调度。我们在Linux用
cat /proc/interrupts 也可以看到这些中断与众不同,如下图。这些中断左边显示的不是中断请求号,而是一个标识,右边显示的也不是中断控制芯片的信息。