lp - file speciali per le stampanti
#include <linux/lp.h>
lp[0–2] sono dispositivi a carattere per le stampanti connesse
sulla porta parallela; hanno numero primario 6 e numero secondario 0–2.
I numeri secondari corrispondono agli indirizzi base delle porte della
stampante 0x03bc, 0x0378 e 0x0278. Si solito hanno modo di accesso 220 e sono
di proprietà dell'utente
root e gruppo
lp. Si può
usare la porta della stampante sia in polling che con interrupt. Gli interrupt
sono raccomandati quando è previsto molto traffico, per esempio per le
stampanti laser. Per le tipiche stampanti ad aghi di solito è
sufficiente il polling. Il default è il polling.
Sono supportate le seguenti chiamate
ioctl(2):
-
int ioctl(int fd, LPTIME, int
arg)
- Pone uguale ad arg l'ammontare di tempo che il
driver deve aspettare prima di ricontrollare la stampante quando il buffer
della stampante sembra essere pieno. Se si ha un stampante veloce, si
può diminuire questo numero; se si ha una stampante lenta conviene
aumentarlo. Il valore è espresso in centesimi di secondo, e il
default 2 significa 0.02 secondi. Questo valore influenza solo il driver
di tipo "polling".
-
int ioctl(int fd, LPCHAR, int
arg)
- Assenga ad arg il numero massimo di iterazioni in
busy-wait che il driver di tipo "polling" effetua aspettando che
la stampante sia pronta a ricevere un carattere. Se la stampa è
troppo lenta, si può incrementare questo numero; se il sistema va
troppo piano lo si decrementi. Il default è 1000. Il valore ha
influenza solo sulla sequenza di interrogazione dei driver.
-
int ioctl(int fd, LPABORT, int
arg)
- Se arg è 0, il driver della stampante
riproverà a trasmettere nel caso si verifichino errori, altrimenti
interromperà la stampa. Il default è 0.
-
int ioctl(int fd, LPABORTOPEN, int
arg)
- Se arg è 0, open(2) sarà
terminato in caso un errore, altrimenti l'errore sarà ignorato. Il
default è di ignorarlo.
-
int ioctl(int fd, LPCAREFUL, int
arg)
- Se arg è 0, i segnali out-of-paper, offline
ed error devono essere falsi durante tutte le operazioni di scrittura,
altrimenti vengono ignorati. Il default è di ignorarli.
-
int ioctl(int fd, LPWAIT, int
arg)
- Assegna ad arg il numero di iterazioni in busy-wait
da aspettare prima di abilitare (strobe) la stampante ad accettare il
carattere appena scritto, e il numero di iterazioni da attendere prima di
togliere ancora l'abilitazione. Le specifiche dicono che questo tempo
dovrebbe essere di 0.5 microsecondi, ma l'esperienza ha mostrato che il
ritardo causato dal codice è già sufficiente. Per questa
ragione, il valore di default è 0. Questi valori vengono usati sia
per la modalità interrogazione che quella coninterrupt.
-
int ioctl(int fd, LPSETIRQ, int
arg)
- Questa ioctl(2) richiede i privilegi del
superutente. Prende come argomento un intero contenente il nuovo
numero di IRQ. Come effetto collaterale, la stampante sarà
reimpostata. Quando arg è 0, questa chiamata seleziona il
driver di tipo "polling", che è anche quello di
default.
-
int ioctl(int fd, LPGETIRQ, int
*arg)
- Salva l'IRQ correntemente usato in arg.
-
int ioctl(int fd, LPGETSTATUS, int
*arg)
- Salva il valore della porta di stato della stampante in
arg. I bit hanno i seguenti significati:
LP_PBUSY |
input busy invertito, attivo alto |
LP_PACK |
input acknowledge invariato, attivo basso |
LP_POUTPA |
input "out-of-paper" invariato, attivo alto |
LP_PSELECD |
input "selected" invariato, attivo alto |
LP_PERRORP |
input "error" invariato, attivo basso |
- Si faccia riferimento al manuale della propria stampante
per ilsignificato dei segnali. Si noti che possono essere impostati anche
ibit non documentati, ma questo dipende dalla stampante usata.
-
int ioctl(int fd, LPRESET)
- Reimposta la stampante. Non è necessario alcun
argomento.
/dev/lp*
chmod(1),
chown(1),
mknod(1),
lpcntl(8),
tunelp(8)
La traduzione italiana di questa pagina di manuale è stata creata da
Giovanni Bortolozzo <
[email protected]>, Alessandro Rubini
<
[email protected]>, Giulio Daprelà <
[email protected]> e Marco
Curreli <
[email protected]>
Questa traduzione è documentazione libera; leggere la
GNU
General Public License Versione 3 o successiva per le condizioni di
copyright. Non ci assumiamo alcuna responsabilità.
Per segnalare errori nella traduzione di questa pagina di manuale inviare un
messaggio a
[email protected]