tail head cat sleep
QR code linking to this page

Manpage  — LP

BEZEICHNUNG

lp - line printer devices (Zeilendrucker)

INHALT

Ü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 and 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 beeinflußt 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 daß 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 beeinflußt 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, daß 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, daß 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 zur Zeit 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_PBUSYinvertierter busy Eingang, aktiv high
LP_PACKunveränderter acknowledge Eingang, aktiv low
LP_POUTPAunveränderter out-of-paper Eingang, aktiv high
LP_PSELECDunveränderter selected Eingang, aktiv high
LP_PERRORPunveränderter error Eingang, aktiv low

Siehe auch Dein Drucker Handbuch für die Bedeutung der Signale. Beachte dabei, daß 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.amp; 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)

tail head cat sleep
QR code linking to this page


Bitte richten Sie Ihre Kommentare zu diesem Handbuch Seite Service, Ben Bullock. Privacy policy.

Our grievance is not just against Unix itself, but against the cult of Unix zealots who defend and nurture it. They take the heat, disease, and pestilence as givens, and, as ancient shamans did, display their wounds, some self-inflicted, as proof of their power and wizardry. We aim, through bluntness and humor, to show them that they pray to a tin god, and that science, not religion, is the path to useful and friendly technology.
— The Unix Haters' handbook