現在のデバイスドライバを変更する前に、関連するプログラム類を保存しておく。
現在のドライバの割り込みハンドラ(dio_interrupt_handler)
は、カーネ
ルログとして単にINTERRUPTとしか出力しないので、どのような種類の割
り込みであるかが分からない。
割り込みステータスを確認して発生した割り込みの種類をカーネルログに出力す るようにドライバを修正しなさい。
例えば、割り込みの種類がSIG1のインタラプトだったら、「I/O資料」を
参考にして、printk("INTERRUPT\n")
を次のように書き直せばよい。
if (status & 0x01) printk("SIG1 INTERRUPT\n"); |
SIG1 INTERRUPTのほかに、SIG2 INTERRUPT、 SIG3 INTERRUPT、SIG4 INTERRUPT、 TIMER INTERRUPT、RSTIN INTERRUPTなどもカーネルログに出力でき るようにすること。
実行するテストプログラムは、課題1と同じものを使う。