next up previous
次へ: dio_ioctl関数の拡張 上へ: 割り込み処理の実装 戻る: 割り込みハンドラ

割り込みのioctlコマンド

先に説明した割り込み要因および割り込み論理の設定と割り込みマスクの解除 を行なうためのioctlコマンドを考える。

この「割り込み要因・論理とマスク設定を行なうコマンド」のほかに、割り込み 処理において必要になる「インターバルタイマの周期設定を行なうコマンド」も 作成することにする。このコマンドでインターバルタイマを設定後、割り込み マスク設定で、インターバルタイマ割り込みを有効にすることができる。 これにより、設定した周期毎に割り込みを発生させることが可能になる。

この2つのコマンドの名前を次のよう決める。

このコマンドの定義を前の実験で作成したヘッダーファイルの dio_ioctl.hに追加する。

typedef struct _DIO_EVENT {
	unsigned char irq_mask;
	unsigned char irq_config;
} DIO_EVENT, *PDIO_EVENT;

#define IOCTL_DIO_SET_EVENT _IOW(DIO_IOC_MAGIC,  4, DIO_EVENT)
#define IOCTL_DIO_SET_TIMER _IOW(DIO_IOC_MAGIC,  5, unsigned char)

DIO_EVENT構造体のメンバ変数の内容は、IOCTL_DIO_SET_EVENTコマン ドを実行するときに指定する割り込み設定の値になる。

また、インターバルタイマの設定値は1バイトのレジスタを設定するため、 unsigned char型を指定した。



MANOME Yoichi 平成18年12月26日