分类: LINUX
2011-08-15 15:43:17
linux-2.6.20
/usr/src/linux/include/asm-x86_64/hw_irq.h +122 --------------------------------------------- #define BUILD_IRQ(nr) \ asmlinkage void IRQ_NAME(nr); \ __asm__( \ "\n.p2align\n" \ "IRQ" #nr "_interrupt:\n\t" \ "push $~(" #nr ") ; " \ "jmp common_interrupt"); /usr/src/linux/arch/i386/kernel/entry.S +206 --------------------------------------------- common_interrupt: SAVE_ALL TRACE_IRQS_OFF movl %esp,%eax call do_IRQ jmp ret_from_intr CFI_ENDPROC handle_fasteoi_irq() handle_edge_irq() common_interrupt: --> do_IRQ() --> handle_irq() --> handle_IRQ_event() --> action->handler()
do_IRQ() -- 中断机制入口函数
handle_edge_irq()
handle_IRQ_event()
|