linux kernel で割り込みを扱う
- request_irq() で割り込みハンドラインストール
- free_irq() で割り込みハンドラアンインストール
以下、最小限コード。LINUXデバイスドライバ第3版 の記述から request_irq() と割り込みハンドラの I/F が変更されています。
- PC上で insmod mykmod.ko irq=12 としてカーネルモジュールをインストール後、マウスを動かす度にカーネルメッセージが大量に出力されます。
割り込みハンドラ内で(やってはいけない|できない)こと。
- スリープ(wait_event()など)
- ユーザー空間とのデータのやりとり
- メモリ割り当て、ただしGFP_ATOMICフラグを付加すればOK
- セマフォのロック
- schedule()コール