tail head cat sleep
QR code linking to this page

manページ  — PPI

名称

ppi – ppbus パラレル 'geek' ポートへのユーザ空間インタフェース

内容

書式

device ppi0 at ppbus?

マイナー番号: ユニット番号は ppbus 番号に直接対応する。

解説

ppi デバイスドライバはユーザアプリケーションが パラレルポートの状態を操作するための便利な手段を提供し、 /dev/io インタフェースを使うことに起因するセキュリティ問題を生じることなく、 容易に低速 I/O 操作ができるようにします。

プログラミングインタフェース


#include </sys/dev/ppbus/ppi.h>
#include </sys/dev/ppbus/ppbconf.h>

ppi インタフェースでのすべての I/O は ioctl() 呼び出しを使うことによって行います。 各々のコマンドは 1 つの
.Ty u_int8_t 引数をとり、1 バイトのデータを転送します。 以下のコマンドを使うことができます。
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;         u_int8_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() インタフェースは低速であり、 複数の操作を連続して行うための方法が (まだ) ありません。

ユーザアプリケーションで必要なヘッダは 標準のシステムではインストールされません。


FreeBSD PPI (4) January 2, 1998

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.