Provided by:
manpages-de_0.5-2ubuntu1_all 
BEZEICHNUNG
lp - line printer devices (Zeilendrucker)
ÜBERSICHT
#include <linux/lp.h>
KONFIGURATION
lp[0–2] sind zeichenorientierte Geräte für Drucker an der parallelen
Schnittstelle; ihre major numbers sind 6, ihre minor numbers sind 0–2.
Die minor numbers korrespondieren zu den Basisadressen 0x03bc, 0x0378
und 0x0278 der Druckerports. Normalerweise haben sie mode 220 und
gehören root und Gruppe lp. Die Druckerports können entweder im
polling- oder interrupt-Betrieb benutzt werden. Falls ein großer
Datendurchsatz erwartet wird, z.B. für Laserdrucker, sollten Interrupts
benutzt werden. Für normale Matrixdrucker sollte polling ausreichen.
Der default ist polling.
BESCHREIBUNG
Die folgenden ioctl(2) Aufrufe werden unterstützt:
int ioctl(int Ifd, LPTIME, int arg)
Wenn der Druckerpuffer voll ist, schläft der Treiber für arg
Hundertstelsekunden, bevor er den Puffer erneut prüft. Für
einen schnellen Drucker sollte dieser Wert niedrig, für einen
langsamen Drucker dagegen hoch gewählt werden. Der default
beträgt 2, also 0,02 Sekunden. Dies beeinflusst nur den
pollenden Treiber.
int ioctl(int fd, LPCHAR, int arg)
Setzt die maximale Anzahl von busy-wait Iterationen des
pollenden Treibers, die gemacht werden, wenn der Treiber darauf
wartet, dass der Drucker bereit wird, auf arg. Die Zahl sollte
erhöht werden falls das Drucken zu langsam ist und erniedrigt
werden, wenn das System zu stark belastet wird. Der
Standardwert ist 1000. Dies beeinflusst nur den pollenden
Treiber.
int ioctl(int fd, LPABORT, int arg)
Falls arg 0 ist, wird es der Druckertreiber bei Fehlern erneut
versuchen, ansonsten aufgeben. Der Standardwert ist 0.
int ioctl(int fd, LPABORTOPEN, int arg")"
Falls arg 0 ist, wird open(2) bei auftretenden Fehlern
abgebrochen, ansonsten werden Fehler ignoriert. Der default ist
ignorieren.
int ioctl(int fd, LPCAREFUL, int arg)
Falls arg 0 ist, müssen alle out-of-paper-, offline- und
Fehlersignale bei allen Schreibzugriffen logisch falsch sein,
ansonsten werden sie ignoriert. Standard ist es, sie zu
ignorieren.
int ioctl(int fd, LPWAIT, int arg)
Setzt die Anzahl von busy-wait Iterationen, die ausgeführt
werden, bevor der strobe Impuls beginnt. (Strobe signalisiert
dem Drucker, dass die Daten am Datenport stabil anliegen und ein
neues Zeichen enthalten.) Es werden ebenfalls arg Iterationen
ausgeführt, bevor der strobe Impuls beendet wird. Die
Spezifikation gibt eine Impulslänge von 1 bis 500 Mikrosekunden
vor. Der Impuls darf frühestens eine Mikrosekunde nach dem
Anlegen der Daten gegeben werden, welche mit seinem Ende
übernommen werden, und die Daten müssen noch mindestens eine
Mikrosekunde nach dem Ende anliegen. Der Default ist 0, es
werden also keine zusätzlichen Verzögerungsschleifen ausgeführt.
Die Erfahrung hat gezeigt, dass die Verzögerung durch den code
selbst ausreicht. Dies gilt für den Interruptgetriebenen wie
für den pollenden Treiber.
int ioctl(int fd, LPSETIRQ, int arg)
Dieser ioctl() benötigt superuser Privilegien. arg gibt den
neuen IRQ an, der Wert 0 schaltet interrupts ab und polling ein,
was auch default ist. Als Seiteneffekt wird der Drucker dabei
zurückgesetzt.
int ioctl(int fd, LPGETIRQ, int *arg)
Speichert den zurzeit genutzten IRQ in arg.
int ioctl(int fd, LPGETSTATUS, int *arg)
Speichert den Wert des status port in arg. Die Bits haben
folgende Bedeutung:
LP_PBUSY invertierter busy Eingang, aktiv high
LP_PACK unveränderter acknowledge Eingang, aktiv low
LP_POUTPA unveränderter out-of-paper Eingang, aktiv high
LP_PSELECD unveränderter selected Eingang, aktiv high
LP_PERRORP unveränderter error Eingang, aktiv low
Siehe auch dein Drucker-Handbuch für die Bedeutung der Signale.
Beachte dabei, dass auch undokumentierte Bits, in Abhängigkeit
vom Drucker, gesetzt werden können.
int ioctl(int fd, LPRESET)
Setzt den Drucker zurück. Ohne Argument.
FILES
/dev/lp[0-2]
AUTOREN
Der Druckertreiber ist im Original von Jim Weigand und Linus Torvalds
geschrieben worden. Michael K. Johnson hat ihn weiter verbessert. Der
Interrupt code stammt von Nigel Gamble. Alan Cox modularisierte ihn.
LPCAREFUL, LPABORT, LPGETSTATUS wurden von Chris Metcalf hinzugefügt.
SIEHE AUCH
mknod(1), chown(1), chmod(1), tunelp(8), lpcntl(8).
15. Januar, 1995 LP(4)