[[PageNavi(internal22-navi)]]
{{{ comment
h2w-title:割り込みハンドラの起動
}}}
= 割り込みハンドラの起動 = #SECTION02430000000000000000
割込みハンドラの起動は以下のようにして行われる。割込みエントリ関数do_IRQ関数(後述)から、割り込みが発生した割込み制御ハードウェアに対応した関数が呼び出される。(下の例では、do_foo_IRQ関数)この関数では、各割込み制御ハードウェア(IOAPICや8259割り込みコントローラなど)固有の方法で割込みマスクを制御し、割込みハンドラ起動関数 handle_IRQ_event()を呼び出す。handle_IRQ_event関数は、ドライバが登録したハンドラを実際に起動する。
[[Embed(internal22-images:img16.gif)]]
{{{
do_foo_IRQ(割り込み番号IRQ、...)
同種の割り込みが入らないように、割込みのマスクを行う。
割込みに対するACKを返す。
handle_IRQ_event(割り込み番号IRQ、irq_desc[]に登録されているハンドラのリスト)
割込みマスクの解除
handle_IRQ_event(割り込み番号IRQ、ハンドラリスト)
割り込みハンドラ開始宣言(irq_enter関数)
if(割り込みのネストを許すハンドラなら)
CPUの割り込み許可
登録されている場合は、全てのハンドラを呼ぶ)
CPUの割り込み禁止
割り込みハンドラ終了宣言(irq_exit関数)
}}}
----
{{{ html
<A NAME="CHILD_LINKS"> </A>
}}}
* [internal22-43-問題点#SECTION02431000000000000000 問題点]
----
''(NIS)HirokazuTakahashi [[BR]]2000年06月11日 (日) 22時29分57秒 JST''1
[[PageNavi(internal22-navi)]]