PPI(4) FreeBSD カーネルインタフェースマニュアル PPI(4)
名称
ppi − ppbus パラレル ’geek’ ポートへのユーザ空間インタフェース |
書式
device ppi0 at ppbus? マイナー番号: ユニット番号は ppbus 番号に直接対応する。 |
解説 |
ppi デバイスドライバはユーザアプリケーションがパラレルポートの状態を操作 するための便利な手段を提供し、 /dev/io インタフェースを使うことに起因する セキュリティ問題を生じることなく、容易に低速 I/O 操作ができるようにしま す。 |
プログラミングインタフェース
#include </sys/dev/ppbus/ppi.h> ppi インタフェースでのすべての I/O は ioctl() 呼び出しを使うことによって 行います。各々のコマンドは 1 つの引数をとり、1 バイトのデータを転送しま す。以下のコマンドを使うことができます。 |
PPIGDATA, PPISDATA
データレジスタの内容の読み出しと書き込みを行います。 PPIGSTATUS, PPISSTATUS PPIGCTRL, PPISCTRL PPIGEPP, PPISEPP PPIGECR, PPISECR PPIGFIFO, PPISFIFO 使用例 |
データポートに値 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 January 2, 1998 FreeBSD |