Linux 2.6.36 x86 内核中断初始化过程详解(2)

/* 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 也可以看到这些中断与众不同,如下图。这些中断左边显示的不是中断请求号,而是一个标识,右边显示的也不是中断控制芯片的信息。

Linux 2.6.36 x86 内核中断初始化过程详解

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/24059.html