next up previous
次へ: 割り込みのioctlコマンド 上へ: 割り込み処理の実装 戻る: 割り込み処理の解除

割り込みハンドラ

request_irq関数で登録した割り込みハンドラの実装を行なう。

この実験では割り込みハンドラとして次のようなdio_interrupt_handler を作成して実装する。

\begin{boxedminipage}{\textwidth}
\begin{verbatim}void dio_interrupt_handler(i...
...dress[0] + 0x0C);printk(''INTERRUPT\n'');
}\end{verbatim}
\end{boxedminipage}

割り込みハンドラに渡される引数は、割り込み番号(irq)、登録時に指定 した識別子(*dev_id)、レジスタ情報(*regs)の3つである。

このうち、ハンドラ内で実際に使用するのは、識別子として登録したデバイス情 報(*dev_id)のポインタだけである。

この識別子からデバイスのリソース情報構造体を取出して、割り込み要因フラグの確 認やクリアを行なう。(PCI-2726C I/O公開資料 P.11の1.7 ADR+0Ch : 割り込み要因フラグ)

PCI-2726C I/O公開資料」を参照するばあいに、今後は、単に「I/O資料」と 呼ぶことにする。

割り込みステータスの確認を行って、このデバイスからの割り込みでなかった場 合には、すぐに処理を終了する。



MANOME Yoichi 平成19年1月6日