EN JA
PPI(4)
PPI(4) FreeBSD Kernel Interfaces Manual PPI(4)

名称

ppippbus パラレル '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