LP(4)

BEZEICHNUNG
lp - Zeilendrucker (line printer devices)

ÜBERSICHT
#include <linux/lp.h>

KONFIGURATION
lp[0–2] sind zeichenorientierte Geräte für Drucker an der parallelen Schnittstelle; ihre Hauptnummer (Major Number) ist 6, ihre Nebennummern (Minor Numbers) sind 0–2. Die Nebennummern korrespondieren mit den Basisadressen 0x03bc, 0x0378 und 0x0278 der Druckerports. Normalerweise sind ihre Zugriffsrechte 220, der Besitzer ist root und die Gruppe lp. Die Druckerports können entweder im Polling- oder Interrupt-Betrieb benutzt werden. Falls ein größerer Datendurchsatz erwartet wird, z.B. für Laserdrucker, sollten Interrupts benutzt werden. Für typische Matrixdrucker sollte Polling ausreichen. Der Vorgabewert ist Polling.

BESCHREIBUNG
Die folgenden Aufrufe von ioctl(2) werden unterstützt:

int ioctl(int fd, 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. Die Vorgabe ist 2, also 0,02 Sekunden. Dies beeinflusst nur den abrufenden Treiber (Polling).

int ioctl(int fd, LPCHAR, int arg)
    Setzt die maximale Anzahl der Durchgänge, die der abrufende Treiber wartet, bis der Drucker bereit ist, ein Zeichen für arg zu empfangen. Die Zahl sollte vergrößert werden, falls das Drucken zu langsam ist und verkleinert werden, wenn das System zu langsam wird. Der Standardwert ist 1000. Dies beeinflusst nur den abrufenden Treiber (Polling).

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. Standardmäßig werden Fehler ignoriert.

int ioctl(int fd, LPCAREFUL, int arg)
    Falls arg 0 ist, müssen die Signale »out-of-paper«, »offline« und »error« bei allen Schreibzugriffen logisch falsch sein, ansonsten werden sie ignoriert. Es ist Standard, 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 0,5 Mikrosekunden vor. Die Erfahrung hat gezeigt, dass die Verzögerung durch den Code selbst ausreicht. Darum ist der Standardwert 0. Er wird für den interruptgetriebenen wie für den abrufenden Treiber verwendet.

int ioctl(int fd, LPSETIRQ, int arg)
    Dieser ioctl(2) benötigt Superuser-Rechte. Das Argument arg ist die Nummer des neuen IRQs. Der Wert 0 schaltet Interrupts ab und Polling ein, was auch Standard ist.

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 Statusports in arg. Die Bits haben folgende Bedeutung:
    LP_PBUSY | invertierter Busy-Eingang, aktiv hoch
    LP_PACK | unveränderter Acknowledge-Eingang, aktiv niedrig
    LP_POUTPA | unveränderter »out-of-paper«-Eingang, aktiv hoch
    LP_PSELECD | unveränderter Selected-Eingang, aktiv hoch
    LP_PERRORP | unveränderter Error-Eingang, aktiv niedrig

Lesen Sie auch Ihr Drucker-Handbuch für die Bedeutung der Signale. Beachten Sie, dass abhängig vom Drucker auch undokumentierte Bits gesetzt werden können.

int ioctl(int fd, LPRESET)
    Setzt den Drucker zurück. Ohne Argument.

DATEIEN
/dev/lp*

SIEHE AUCH
chmod(1), chown(1), mknod(1), lpcntl(8), tunelp(8)

KOLOPHON
Diese Seite ist Teil der Veröffentlichung 4.15 des Projekts Linux-man-pages. Eine Beschreibung des Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden sich unter https://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Michael Haardt <michael@moria.de>, Martin Eberhard Schauer <Martin.E.Schauer@gmx.de> und Dr. Tobias Quathamer <toddy@debian.org> erstellt. Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen. Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an <debian-l10n-german@lists.debian.org>.