next up previous
次へ: PCIデバイスの再確認 上へ: システムコールの実行(open, close) 戻る: デバイスノードの生成

アプリケーションの作成

Linuxのユーザ空間で動作させるアプリケーションを作成する。

処理内容としては、基本動作を確認するために、実装したdio_opendio_releaseを呼び出して、すぐに終了することにする。

システムコールのopenは、ファイル・デスクリプタ(file descripter)を fdとしたときに

\begin{boxedminipage}{\textwidth}
\begin{verbatim}fd = open(''/dev/pci2726c'', O_RDWR)\end{verbatim}
\end{boxedminipage}
とすればよい。

実際には、スペシャル・ファイルのオープンに失敗したときにそなえて、次のよ うにしたほうがよい。


\begin{boxedminipage}{\textwidth}
\begin{verbatim}fd = open(''/dev/pci2726c''...
...f(''[open] no Shippai\n'');
return -errno;
}\end{verbatim}
\end{boxedminipage}

また、システムコールのcloseは、ファイルデスクリプタをfdと したときに

\begin{boxedminipage}{\textwidth}
\begin{verbatim}close(fd)\end{verbatim}
\end{boxedminipage}
とすればよい。

openシステムコールとcloseシステムコールのアプリケーションとし て、次のようなテスト・プログラムにまとめる。

以下のコードを記述し、dio_tst.cというソースファイルにする。


\begin{boxedminipage}{\textwidth}
\begin{verbatim}...

dio_tst.cをコンパイルするためにMakefileに以下の記述を追加する。

次のように \fbox{\tt TARGETS = dio\_drv.o}の行にdio_tstを付加する。

        TARGETS = dio_drv.o dio_tst

さらに、 \fbox{\tt all:} \fbox{\tt clean:}の間に

        dio_tst: dio_tst.c
               $(CC) -o dio_tst dio_tst.c

を付加する。
(注. $(CC) -o dio_tst dio_tst.cの前の空間はTABにすること。)


\begin{boxedminipage}{\textwidth}
\begin{verbatim}all: $(TARGETS)dio_tst: ...
...o_tst.cclean:
rm -f *.o *~ core $(TARGETS)\end{verbatim}
\end{boxedminipage}

これでドライバへのアクセスを行う簡単なテストプログラムができたので、これ を使って、以下のように動作確認を行うことにする。

最初にテストプログラムdio_tst.cを次のようにコンパイルする。

     # make

コンパイルでエラーが出なければ、実行可能イメージとしてのdio_tstア プリケーションが生成されているので、念のためlsコマンドで確かめること。

ドライバ(dio_drv.o)がカーネル空間 に格納登録(insmod)されている状態で、ユーザ空間からdio_tst を、次のように実行する。

     # ./dio_tst

下記のようなメッセージが返ってくればテストに成功したことになる。

     [dio_open] ga Yobareta.
     [dio_release] ga Yobareta.



MANOME Yoichi 平成18年12月26日