次へ: ioctlのRESETのライブラリ化
上へ: Application Program Interface
戻る: 実験11の例題
もし、次に示すアプリケーションのopen処理を
fd = open("/dev/pci2726c", O_RDWR);
if (fd < 0){
printf("[open] no Shippai.\n");
return -errno;
}
|
つぎのような名前の関数
としてライブラりに登録できれば、アプリケーションは次のようになる。
/* 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 = DioOpen(); // ライブラリ
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;
}
自分のライブラリに登録する関数の名前と引数は自由である。
ここでは、とりあえず名前をDioOpenとして引数の数をゼロにした。
なお、この名前は「PCIバスによるI/O制御」の203ページや210ページを参考にした。
MANOME Yoichi
平成18年12月26日