現在のプログラムを変更する前に、関連するファイルを保存し ておく。
現在のデバイスドライバの割り込みハンドラ(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と同じdio_app
を使う。