next up previous
次へ: ドライバの格納 上へ: システムコールの実装(その4: dio_ioctl) 戻る: dio_ioctl関数の作成

ドライバの作成

実験の失敗に備えて情報システム実験(10)で作成したデバイスドライバと アプリケーションのテストプログラムとMakefileを次のようにディレクト リLab10に保存しておくこと。


\begin{boxedminipage}{5cm}
\begin{verbatim}...


今回の実験では実験(9)で作成したdio_drv.cを機能拡張する。
実験(10)で作成したdio_drv.cはデバイスノードのマイナー番号を利用し たドライバであり、ioctlのコマンド番号に準じた判別法を使っているの で、今回の実験では使用しない。

最初にioctlのコマンドと引数構造体を定義したヘッダファイルを、次の ようにインクルードする。

      #include "dio_ioctl.h"

また、グローバル変数とその初期値を次のように宣言しておく。

      unsigned long predata = 0;

それから、ioctlシステムコールのdio_ioctlメソッド本体とそのサブ関数群 をfile_operations構造体の前に追加記述すればよい。プロトタイプ宣言 をするのでなければ呼び出される関数は、それを呼び出す関数の前に置かなけれ ばならない。

最後に、file_operations構造体のioctlフィールドに dio_ioctlを登録する。
\begin{boxedminipage}{\textwidth}
\begin{verbatim}struct file_operations dio_f...
...ctl,
open: dio_open,
release: dio_release,
};\end{verbatim}\end{boxedminipage}

機能拡張したドライバのソースコードを次のようにコンパイルする。

     # make clean
     # make



MANOME Yoichi 平成18年12月25日