Show page source of internal22-42-割り込みハンドラの起動 #25419

[[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">&#160;</A>
}}}

  *  [internal22-43-問題点#SECTION02431000000000000000 問題点]

----

''(NIS)HirokazuTakahashi [[BR]]2000年06月11日 (日) 22時29分57秒 JST''1

[[PageNavi(internal22-navi)]]