設定
lp[0–2]
はパラレルプリンターのためのキャラクターデバイスでメジャー
ナンバー 6
マイナーナンバー 0–2
を持つ。マイナーナンバーは、ベース
アドレス 0x03bc, 0x0378, 0x0278
のそれぞれのプリンターポートに対応する
通常、このデバイスファイルは、モード
220
で、所有権はユーザー
root でグループ lp
となっている。プリンターポートはポーリング(polling)または割り込み
(interrupts)
のどちらを用いても利用できる。割り込みの利用は、高負荷が
予想される時、例えばレーザープリンターをプリンタポートに接続する場合な
どに推奨される。普通のドットマトリクスプリンターでは、ポーリングの利用
で通常は十分である。デフォルトではポーリングを利用する。
説明
次の ioctl(2)
コールがサポートされている。
- int ioctl(int
fd, LPTIME, int arg)
- プリンターのバッファー
(buffer)
がいっぱいになった時、ドライバがプリンター
を再チェックするまでに休止する時間を
arg
とする。高速なプリンター
の時はこれを減らし、遅いプリンターの時には増やす。単位は1秒の100分の1
で、デフォルトの2は0.02秒にあたる。ポーリングドライバ
(polling driver)
のみに影響する。
- int ioctl(int
fd, LPCHAR, int arg)
- ポーリングドライバがプリンターの文字受取り準備ができるのを待
つビジーウエイト
(busy-wait)
の回数の最大値を
arg とする。
もし印刷が遅すぎる時はこれを増やし、システムが遅くなりすぎる時には
減らす。デフォルトは
1000
である。ポーリングドライバのみに影響する。
- int ioctl(int
fd, LPABORT, int arg)
- もし、arg が 0
なら、プリンタードライバはエラーについて再試行
を行う。それ以外の場合は中止する。デフォルトは
0 である。
- int ioctl(int
fd, LPABORTOPEN, int arg)
- もし、arg が 0 なら
open(2)
の結果がエラーの場合、動作が中止される。それ以外ならエラーは無
視される。デフォルトではエラーは無視される。
- int ioctl(int
fd, LPCAREFUL, int arg)
- arg が 0
のときには、すべての書き出しの時に、紙切れ、オフライン、エ
ラーのシグナルが偽
(false)
であることが必要とされるが、0
以外ならこれらのシグナルは無視される。デフォルトでもこれらのシグナルは無視される。
- int ioctl(int
fd, LPWAIT, int arg)
- プリンターが送られた文字を受け取るのを待つため、ドライバが文字を送っ
てからストローブ(strobe)するまでの待ちの繰り返しの回数と、ストローブ
を再びオフにするまでの待ちの繰り返しの回数を
argに設定
する。仕様によればこの時間は
0.5
マイクロ秒とするべきだが、経験によれば
このコードによって生じる遅れで十分である。そのため、デフォルトでは
0 で
ある。これは、ポーリングと割り込みドライバの両方で使われる。
- int ioctl(int
fd, LPSETIRQ, int arg)
- この ioctl(2)
を使うには、スーパーユーザーの権限が必要である。新しいIRQを示す
int
を引数としてとる。また、副作用としてプリンターはリセットされる。
argが0の時またはデフォルトの動作では、ポーリングドライバーが使わ
れる。
- int ioctl(int
fd, LPGETIRQ, int *arg)
- 現在使われているIRQをargにいれる。
- int ioctl(int
fd, LPGETSTATUS, int *arg)
- ステータスポートの値をargに収める。各ビットには次のような意味が
ある:
LP_PBUSY |
ビジー信号の反転、ハイがアクティブ |
LP_PACK |
アクノリッジ信号、ローがアクティブ |
LP_POUTPA |
紙切れ信号、ハイがアクティブ |
LP_PSELECD |
選択信号、ハイがアクティブ |
LP_PERRORP |
エラー信号、ローがアクティブ |
- 信号の意味については各自のプリンターのマニュアルを参照のこと。プリンター
によっては記載のないビットもセットされるかもしれないので、注意のこと。
- int ioctl(int
fd, LPRESET)
- プリンターをリセットする。引数はとらない。
この文書について
この man ページは Linux
man-pages
プロジェクトのリリース
5.10
の一部である。プロジェクトの説明とバグ報告に関する情報は
https://www.kernel.org/doc/man-pages/
に書かれている。