PPI(4) | FreeBSD Kernel Interfaces Manual | PPI(4) |
名称
ppi — ppbus パラレル 'geek' ポートへのユーザ空間インタフェース書式
device ppiマイナ番号: ユニット番号は ppbus 番号に直接対応します。
#include < dev/ppbus/ppi.h>
#include < dev/ppbus/ppbconf.h>
解説
ppi ドライバは、 /dev/io インタフェースの使用で特有のセキュリティ問題のない容易な低い速度 I/O オペレーションを可能にして、パラレルポートの状態を操作するユーザアプリケーションのための便利な手段を提供します。プログラミングインタフェース
ppi インタフェース上のすべての I/O は、 ioctl() 呼び出しを使用して実行されます。各コマンドは 1 バイトのデータを転送する、1 つの uint8_t 引数をとります。次のコマンドが利用可能です:- PPIGDATA, PPISDATA
- データレジスタの内容を取得して設定します。
- PPIGSTATUS, PPISSTATUS
- ステータスレジスタの内容を取得して設定します。
- PPIGCTRL, PPISCTRL
-
制御レジスタの内容を取得して設定します。つぎの定義は、このレジスタの中のビットに対応します。制御レジスタ中でビットをセットすることは対応する出力を low に (低く) 駆動します。
- STROBE
- AUTOFEED
- nINIT
- SELECTIN
- PCD
- PPIGEPP, PPISEPP
- EPP 制御レジスタの内容を取得して設定します。
- PPIGECR, PPISECR
- ECP 制御レジスタの内容を取得して設定します。
- PPIGFIFO, PPISFIFO
- ECP FIFO (8 ビットのオペレーションのみ) を読み込み書き込みします。
使用例
データポートへ値 0x5a を出力するために、STROBE を low に (低く) 駆動し、そしてその後、再び high に (高く) 駆動します。次のコードの断片を使用できます:int fd; uint8_t val; val = 0x5a; ioctl(fd, PPISDATA, &val); ioctl(fd, PPIGCTRL, &val); val |= STROBE; ioctl(fd, PPISCTRL, &val); val &= ~STROBE; ioctl(fd, PPISCTRL, &val);
バグ
シグナルの逆の意味は、混乱させられます。ioctl() インタフェースは遅く、また、複数の操作をともにチェーンする方法 (まだ) はありません。
ユーザアプリケーションのために要求されるヘッダは、標準システムの一部としてインストールされません。
January 2, 1998 | FreeBSD |