Linuxカーネルに関する技術情報を集めていくプロジェクトです。現在、Linuxカーネル2.6解読室の第2章までを公開中。
割込みハンドラの起動は以下のようにして行われる。割込みエントリ関数do_IRQ関数(後述)から、割り込みが発生した割込み制御ハードウェアに対応した関数が呼び出される。(下の例では、do_foo_IRQ関数)この関数では、各割込み制御ハードウェア(IOAPICや8259割り込みコントローラなど)固有の方法で割込みマスクを制御し、割込みハンドラ起動関数 handle_IRQ_event()を呼び出す。handle_IRQ_event関数は、ドライバが登録したハンドラを実際に起動する。
do_foo_IRQ(割り込み番号IRQ、...) 同種の割り込みが入らないように、割込みのマスクを行う。 割込みに対するACKを返す。 handle_IRQ_event(割り込み番号IRQ、irq_desc[]に登録されているハンドラのリスト) 割込みマスクの解除 handle_IRQ_event(割り込み番号IRQ、ハンドラリスト) 割り込みハンドラ開始宣言(irq_enter関数) if(割り込みのネストを許すハンドラなら) CPUの割り込み許可 登録されている場合は、全てのハンドラを呼ぶ) CPUの割り込み禁止 割り込みハンドラ終了宣言(irq_exit関数)
(NIS)HirokazuTakahashi
2000年06月11日 (日) 22時29分57秒 JST1
[ページ情報]
更新日時: 2008-08-27 14:45:40, 更新者: hiromichi-m
[権限]
表示:無制限, 編集:ログインユーザ, 削除/設定:メンバー