lp(4) Device Drivers Manual lp(4) NAZWA lp - urzadzenia drukarek wierszowych SKLADNIA #include KONFIGURACJA Pliki lp[0-2] sa urzadzeniami znakowymi obslugujacymi drukarki dolaczone do portow rownoleglych; numer glowny tych urzadzen jest rowny 6, numer podrzedny 0-2. Numery podrzedne odpowiadaja adresom bazowym portu drukarki: 0x03bc, 0x0378 i 0x0278. Zwykle prawa dostepu do plikow tych urzadzen wynosza 220, a ich wlascicielem jest uzytkownik root i grupa lp. Porty drukarki moga byc obslugiwane zarowno przy wykorzystaniu probkowania, jak i przerwan. Stosowanie przerwan jest zalecane, gdy spodziewamy sie duzego ruchu, np. wynikajacego z uzywania drukarki laserowej. W przypadku zwyklych drukarek mozaikowych wystarczajace jest probkowanie. Domyslnym trybem obslugi portu jest probkowanie. OPIS Obslugiwane sa nastepujace wywolania funkcji ioctl(2): int ioctl(int fd, LPTIME, int arg) Ustawia okres, przez jaki sterownik jest uspiony, zanim powtornie sprawdzi stan drukarki w sytuacji, gdy bufor drukarki zdaje sie byc wypelnionym do arg. Jesli drukarka jest szybka, mozna zmniejszyc ten parametr. Jesli drukarka jest wolna, nalezy zwiekszyc ten parametr. Jest to liczba okreslajaca czas w setnych czesciach sekundy, wartosc domyslna wynosi 2, co oznacza 0,02 sekundy. Parametr ten wplywa jedynie na tryb probkowania. int ioctl(int fd, LPCHAR, int arg) Ustawia na argv maksymalna liczbe iteracji aktywnego oczekiwania (busy-wait), jakie wykonuje sterownik probkujacy czekajac, az drukarka bedzie gotowa na otrzymywanie znakow. Jesli drukowanie odbywa sie zbyt wolno nalezy zwiekszyc te liczbe; jesli system za bardzo zwalnia -- nalezy ja zmniejszyc. Domyslna wartoscia tego parametru jest 1000. Parametr ma wplyw na sterownik jedynie w trybie probkowania. int ioctl(int fd, LPABORT, int arg) Jesli parametr arg jest rowny 0, wtedy sterownik drukarki bedzie powtarzal operacje po wystapieniu bledu; w przeciwnym wypadku przerwie dzialanie. Standardowa wartoscia tego parametru jest 0. int ioctl(int fd, LPABORTOPEN, int arg) Jesli arg jest rowny 0, funkcja open(2) zostanie przerwana po wystapieniu bledu; w przeciwnym wypadku blad zostanie zignorowany. Standardowe zachowanie polega na ignorowaniu bledow. int ioctl(int fd, LPCAREFUL, int arg) Jesli arg jest rowny 0, wtedy wymaga sie, aby sygnaly "out-of-paper", "offline" oraz sygnaly bledow byly puste (false) we wszystkich operacjach zapisu, w przeciwnym wypadku sa ignorowane. Domyslnie sa ignorowane. int ioctl(int fd, LPWAIT, int arg) Ustawia na arg liczbe iteracji aktywnego oczekiwania (busy-wait) przed sprobkowaniem, czy drukarka zaakceptowala wlasnie zapisany znak, oraz liczbe iteracji, ktore nalezy przeczekac przed kolejnym probkowaniem. Specyfikacje okreslaja ten czas jako 0.5 mikrosekundy, lecz doswiadczenie wykazalo, ze opoznienie spowodowane wykonaniem kodu jest juz wystarczajace. Z tego powodu wartoscia domyslna dla tego ustawienia jest 0. Jest ono wykorzystywane w sterowniku zarowno w trybie probkowania, jak i w trybie przerwan. int ioctl(int fd, LPSETIRQ, int arg) To wywolanie funkcji ioctl(2) wymaga uprawnien administratora. Funkcja pobiera argument typu int zawierajacy nowe przerwanie IRQ. Skutkiem ubocznym jest inicjacja drukarki. Gdy arg jest zerem, to stosowany bedzie sterownik z probkowaniem; jest to rownoczesnie zachowanie domyslne. int ioctl(int fd, LPGETIRQ, int *arg) Zachowuje w parametrze arg aktualnie stosowane przerwanie IRQ. int ioctl(int fd, LPGETSTATUS, int *arg) Zachowuje wartosc stanu portu w zmiennej arg. Poszczegolne bity maja nastepujace znaczenie: LP_PBUSY odwrocony sygnal zajetosci LP_PACK niezmienione potwierdzenie wejscia LP_POUTPA niezmieniony sygnal braku papieru LP_PSELECD niezmieniony sygnal wyboru LP_PERRORP niezmieniony sygnal bledu Znaczenia sygnalow nalezy szukac w dokumentacji drukarki. Nalezy pamietac, ze dla niektorych drukarek ustawiane moga byc tez nieudokumentowane tu bity. int ioctl(int fd, LPRESET) Inicjuje drukarke. Nie stosuje sie zadnych parametrow. PLIKI /dev/lp* ZOBACZ TAKZE chmod(1), chown(1), mknod(1), lpcntl(8), tunelp(8) TLUMACZENIE Autorami polskiego tlumaczenia niniejszej strony podrecznika sa: Piotr Pogorzelski i Michal Kulach Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . Linux man-pages 6.06 5 lutego 2023 r. lp(4)