*参照元 [#ocd9ebb8]
#backlinks

*説明 [#g9d2c8bb]
-パス: [[linux-2.6.33/arch/x86/kernel/irq.c]]

-FIXME: これは何?
--説明


**引数 [#fa09eecb]
-struct pt_regs *regs
--
--[[linux-2.6.33/pt_regs]]


**返り値 [#v74a78e8]
-int
--


**参考 [#f52200a5]


*実装 [#z6c8091f]
 /*
  * do_IRQ handles all normal device IRQ's (the special
  * SMP cross-CPU interrupts have their own specific
  * handlers).
  */
 unsigned int __irq_entry do_IRQ(struct pt_regs *regs)
 {
 	struct pt_regs *old_regs = set_irq_regs(regs);
 
-
--[[linux-2.6.33/]]
--[[linux-2.6.33/set_irq_regs()]]

 	/* high bit used in ret_from_ code  */
 	unsigned vector = ~regs->orig_ax;
 	unsigned irq;
 
 	exit_idle();
-
--[[linux-2.6.33/exit_idle()]]

 	irq_enter();
 
-
--[[linux-2.6.33/irq_enter()]]

 	irq = __get_cpu_var(vector_irq)[vector];
 
-
--[[linux-2.6.33/__get_cpu_var()]]

 	if (!handle_irq(irq, regs)) {
 		ack_APIC_irq();
 
-
--[[linux-2.6.33/handle_irq()]]
--[[linux-2.6.33/ack_APIC_irq()]]

 		if (printk_ratelimit())
 			pr_emerg("%s: %d.%d No irq handler for vector (irq %d)\n",
 				__func__, smp_processor_id(), vector, irq);
-
--[[linux-2.6.33/printk_ratelimit()]]
--[[linux-2.6.33/pr_emerg()]]

 	}
 
 	irq_exit();
 
-
--[[linux-2.6.33/]]
--[[linux-2.6.33/irq_exit()]]

 	set_irq_regs(old_regs);
 	return 1;
 }


*コメント [#d29cfa37]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS