next up previous
次へ: レポート 上へ: システムコールの実行(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_app.cというソースファイルにする。


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

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

最初にアプリケーションプログラムdio_app.cを次のようにコンパイルする。

     # make dio_app

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

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

     # ./dio_app

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

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



MANOME Yoichi 平成19年1月6日