next up previous
次へ: アプリケーション作成の課題 上へ: システムコールの実行(ioctl) 戻る: コマンドの使用例

アプリケーションの作成

ioctlシステムコールをテストするためのアプリケーションを作成する。

ランダムな場所からランダムな数にデータを入力し、ランダムな場所へ出力する テストプログラムを考える。

具体的な仕様としては、IN1のデータを入力してOUT32へ出力する。

実験装置のCHK-2101の上では、接点番号1の入力スイッチのデータを接点番号64 のLEDへ出力することになる。(以後、接点番号を接点と略す。)

CHK-2101の接点1〜接点32はIN1〜IN32に対応している。 そして接点33〜接点64はOUT1〜OUT32に対応している。

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

/* InfoSysLab11 example-1 */

#include <stdio.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include "dio_ioctl.h"

int main(void)
{
   int fd, i, ret;
   DIO_POINT point;

   fd = open("/dev/pci2726c", O_RDWR);
   if (fd < 0){
      printf("[open] no Shippai.\n");
      return -errno;
   }

   ret = ioctl(fd, IOCTL_DIO_RESET);
   if (ret < 0) 
       printf("[ioctl reset] no Machigai = %d\n", ret);

   point.start_point = 1;
   point.data_count = 1;

   ret = ioctl(fd, IOCTL_DIO_INPUT, &point);
   if (ret < 0) 
      printf("[ioctl input] no Machigai = %d\n", ret);

   point.start_point = 32;
   point.data_count = 1;

   ret = ioctl(fd, IOCTL_DIO_OUTPUT, &point);
   if (ret < 0) 
      printf("[ioctl output] no Machigai = %d\n", ret);

   close(fd);

   return 0;
}


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

     # make

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

実験装置CHK-2101の接点スイッチを全てOFFにする。
接点1のスイッチだけをONにする。

次のように

     # ./dio_tst

を実行して、接点64のLEDだけがが点灯すれば成功であるが、念ため 接点1のスイッチをOFFにする。

そして、再びdio_tstを実行して、接点64のLEDが消えれば完全に成功である。



MANOME Yoichi 平成18年12月25日