linux-2.6.33/do_IRQ()(x86)
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*参照元 [#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/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...
__func__, smp_processor_id(), vector, irq);
-
--[[linux-2.6.33/printk_ratelimit()]]
--[[linux-2.6.33/pr_emerg()]]
}
irq_exit();
-
--[[linux-2.6.33/irq_exit()]]
set_irq_regs(old_regs);
return 1;
}
*コメント [#d29cfa37]
終了行:
*参照元 [#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/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...
__func__, smp_processor_id(), vector, irq);
-
--[[linux-2.6.33/printk_ratelimit()]]
--[[linux-2.6.33/pr_emerg()]]
}
irq_exit();
-
--[[linux-2.6.33/irq_exit()]]
set_irq_regs(old_regs);
return 1;
}
*コメント [#d29cfa37]
ページ名: