名 前
lp − ラ イ ン プ リ ン タ ー デ バ イ ス
書 式
#include <linux/lp.h>
設 定
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に 収 め る
。 各 ビ ッ ト に
は 次 の よ う な
意 味 が あ る :
信 号 の 意 味 に つ い て は 各 自 の プ リ ン タ ー の マ ニ ュ ア ル を 参 照 の こ と 。 プ リ ン タ ー に よ っ て は 記 載 の な い ビ ッ ト も セ ッ ト さ れ る か も し れ な い の で 、 注 意 の こ と 。
int ioctl(int fd, LPRESET) プ リ ン タ ー を リ セ ッ ト す る 。 引 数 は と ら な い 。
フ ァ イ ル
/dev/lp*
関 連 項 目
chmod(1), chown(1), mknod(1), lpcntl(8), tunelp(8)
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。