Provided by: manpages-de_0.5-4.1ubuntu1_all bug

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)