Provided by: manpages-pl_20060617-2_all bug

NAZWA

       lp - urządzenia drukarek wierszowych

SKŁADNIA

       #include <linux/lp.h>

KONFIGURACJA

       Pliki   lp[0-2]   są   urządzeniami  znakowymi  obsługującymi  drukarki
       dołączone do portów równoległych; numer główny tych urządzeń jest równy
       6,  numer  podrzędny  0-2.  Numery  podrzędne odpowiadają adresom portu
       równoległego kolejno 0x03bc, 0x0378 and 0x0278. Zwykle prawa dostępu do
       plików  tych  urządzeń wynoszą 220 i należą do użytkownika root i grupy
       lp.  Porty równoległe mogą być obsługiwane zarówno  przy  wykorzystaniu
       próbkowania,  jak  i  przerwań.  Stosowanie  przerwań jest zalecane gdy
       spodziewamy się dużego ruchu,  np.  wynikającego  z  używania  drukarki
       laserowej. W przypadku zwykłych drukarek mozaikowych wystarczające jest
       próbkowanie. Standardowym trybem obsługi portu jest próbkowanie.

OPIS

       Urządzenia lp obsługują następujące wywołania funkcji ioctl(2):

       int ioctl(int fd, LPTIME, int arg)
              Ustawia okres przez jaki sterownik jest uśpiony, zanim powtórnie
              sprawdzi  stan drukarki w sytuacji, gdy bufor drukarki zdaje się
              być wypełnionym do arg. Jeśli posiadamy szybką  drukarkę  możemy
              zmniejszyć  ten  parametr.   Jeśli  drukarka  jest wolna, należy
              zwiększyć ten  parametr.  Jest  to  liczba  określająca  czas  w
              setnych częściach sekundy, wartość domyślna wynosi 2, co oznacza
              0,02 s. Parametr ten ma wpływ jedynie w trybie próbkowania.

       int ioctl(int fd, LPCHAR, int arg)
              Ustawia maksymalną liczbę iteracji aktywnego oczekiwania  (busy-
              wait),  jakie wykonuje sterownik próbkujący czekając aż drukarka
              będzie gotowa na otrzymywanie znaków do  arg.  Jeśli  drukowanie
              odbywa  się  zbyt wolno należy zwiększyć tę liczbę; jeśli system
              za bardzo zwalnia - należy ją zmniejszyć. Standardową  wartością
              tego parametru jest 1000. Parametr ma wpływ na sterownik jedynie
              w trybie próbkowania.

       int ioctl(int fd, LPABORT, int arg)
              Jeśli parametr arg jest równy 0, wtedy sterownik drukarki będzie
              powtarzał  operację  po  wystąpieniu błędu; w przeciwmym wypadku
              przerwie w działanie. Standardową wartością tego parametru  jest
              0.

       int ioctl(int fd, LPABORTOPEN, int arg)
              Jeśli  arg  jest  równy 0, funkcja open(2) zostanie przerwana po
              wystąpieniu  błędu;   w   przeciwnym   wypadku   błąd   zostanie
              zignorowany.   Standardowe   zachowanie  polega  na  ignorowaniu
              błędów.

       int ioctl(int fd, LPCAREFUL, int arg)
              Jeśli arg jest równy 0, wtedy wymaga  się  aby  sygnały  out-of-
              paper,  offline  oraz  sygnały  błędów  były  puste  (false)  we
              wszystkich  operacjach   zapisu,   w   przeciwnym   wypadku   są
              ignorowane. Ustawienie standardowe polega na ignorowaniu błędów.

       int ioctl(int fd, LPWAIT, int arg)
              Ustawia na arg liczbę iteracji aktywnego oczekiwania (busy-wait)
              przed spróbkowaniem, czy drukarka zaakceptowała właśnie zapisany
              znak  oraz  liczbę  iteracji,  które  należy  przeczekać   przed
              kolejnym próbkowaniem.  Specyfikacje określają ten czas jako 0.5
              mikrosekundy,  lecz  doświadczenie   wykazało,   że   opóźnienie
              spowodowane  wykonaniem  kodu  jest  już  wystarczające.  Z tego
              powodu wartością domyślną dla tego ustawienia jest 0.  Jest  ono
              wykorzystywane  w sterowniku zarówno w trybie próbkowania, jak i
              w trybie przerwań.

       int ioctl(int fd, LPSETIRQ, int arg)
              To wywołanie funkcji ioctl()  wymaga  uprawnień  administratora.
              Funkcja  pobiera  argument  typu int zawierający nowe przerwanie
              IRQ. Skutekiem ubocznym jest  inicjalizacja  drukarki.  Gdy  arg
              jest  zerem,  to stosowany będzie sterownik z próbkowaniem; jest
              to równocześnie zachowanie domyślne.

       int ioctl(int fd, LPGETIRQ, int *arg)
              Zachowuje w parametrze arg aktualnie stosowane przerwanie IRQ.

       int ioctl(int fd, LPGETSTATUS, int *arg)
              Zachowuje wartość stanu portu w zmiennej arg.  Poszczególne bity
              mają następujące znazenie:

              LP_PBUSY     odwrócony sygnał zajętości, aktywny w stanie wysokim
              LP_PACK      niezmienione potwierdzenie wejścia, aktywny w stanie
                           niskim
              LP_POUTPA    niezmieniony sygnal braku papieru, aktywny
                           w stanie wysokim
              LP_PSELECD   niezmieniony sygnał wyboru, aktywny w stanie wysokim
              LP_PERRORP   niezmieniony sygnał błędu, aktywny w stanie niskim

              Znaczenia   sygnałów  należy  szukać  w  dokumentacji  drukarki.
              Należy pamiętać, że dla niektórych drukarek ustawiane  mogą  być
              też nieudokumentowane tu bity.

       int ioctl(int fd, LPRESET)
              Inicjalizuje drukarkę. Nie stosuje się żadnych parametrów.

PLIKI

       /dev/lp*

AUTORZY

       Sterownik  drukarki  został  napisany  przez  Jima  Weiganda  i  Linusa
       Torvaldsa. Później został on  ulepszony  przez  Michaela  K.  Johnsona.
       Oprogramowanie  przerwań  wykonał  Nigel Gamble. Zmodularyzował go Alan
       Cox. LPCAREFUL, LPABORT, LPGETSTATUS dodał Chris Metcalf.

ZOBACZ TAKŻE

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

                                  1995-01-15                             LP(4)