LP(4) Manuel du programmeur Linux LP(4)
NOM
lp - Imprimantes parallèles.
SYNOPSIS
#include <linux/lp.h>
CONFIGURATION
lp[0-2] sont des périphériques caractères pour les impri
mantes à liaison parallèle. Ils ont un numéro majeur 6 et
un numéro mineur 0-2. Le numéro mineur correspond aux
ports d'imprimantes d'adresse de base 0x03bc, 0x0378 et
0x0278. Habituellement ils ont un mode d'accès 220 et un
propriétaire root.lp.
On peut utiliser les ports parallèles soit en scrutation
(polling) soit en interruption. L'utilisation en interrup
tion est surtout recommandée avec un haut trafic (ex :
imprimante laser). Pour les imprimantes matricielles clas
siques, la scrutation suffira. Par défaut le système
utilise la scrutation.
DESCRIPTION
Les appels systèmes ioctl(2) suivants sont supportés :
int ioctl(int fd, LPTIME, int arg)
fixe la durée pendant laquelle le driver s'endort
avant de revérifier l'état de l'imprimante après
que le buffer ait été rempli. Avec une imprimante
rapide on peut diminuer ce délai, avec une impri
mante lente on peut l'augmenter. La durée est
indiquée dans arg, en centièmes de secondes. La
valeur par défaut est 2 (soit 0,02 seconde). Cela
n'influe que sur le driver en scrutation.
int ioctl(int fd, LPCHAR, int arg)
indique le nombre maximum d'itérations d'attente
active que le driver en scrutation effectue alors
qu'il attend que l'imprimante soit prête. Si
l'impression est trop lente, augmenter cette
valeur, si le système ralentit trop, la diminuer.
Le nombre est indiqué dans arg, la valeur par
défaut est 1000. Cela n'influe que sur le diver en
scrutation.
int ioctl(int fd, LPABORT, int arg)
Si arg vaut 0, le driver réessaiera en cas d'erreur
d'impression, sinon il abandonnera. La valeur par
défaut est 0.
int ioctl(int fd, LPABORTOPEN, int arg)
Si arg vaut 0, open(2) sera annulé en cas d'erreur,
Linux 18 Octobre 1996 1
LP(4) Manuel du programmeur Linux LP(4)
sinon l'erreur sera ignorée. Par défaut elle est
ignorée.
int ioctl(int fd, LPCAREFUL, int arg)
Si arg vaut 0, on bloquera l'écriture sur le port
parallèle au cas où les broches erreur,
plus-de-papier, ou imprimante-hors-ligne sont
validées. Sinon ces signaux seront ignorés. Par
défaut ils sont ignorés.
int ioctl(int fd, LPWAIT, int arg)
Indique le nombre d'itérations d'attente active à
effectuer avant d'activer la broche STROBE pour que
l'imprimante accepte le caractère écrit, et le nom
bre d'itérations à effectuer avant d'éteindre à
nouveau la broche STROBE. Les spécifications
indique que ce délai devrait être de 0,5 micro-sec
ondes, mais l'experience a montré que le délai
induit par le code du driver est suffisant. La
valeur est indiquée dans arg, elle vaut 0 par
défaut. Ceci concerne autant le gestionnaire en
interruption que celui en scrutation.
int ioctl(int fd, LPSETIRQ, int arg)
Cet ioctl() nécessite des privilèges Super-User.
Son argument est une nouvelle IRQ pour l'impri
mante. Comme effet de bords, l'imprimante est
réinitialisée. Si arg vaut 0, le gestionnaire en
scrutation sera utilisé, ce qui est le comportement
par défaut.
int ioctl(int fd, LPGETIRQ, int *arg)
Stocke la valeur actuelle d'IRQ dans arg.
int ioctl(int fd, LPGETSTATUS, int *arg)
Stocke le statut actuel du port dans arg. Les bits
ont les significations suivantes :
LP_PBUSY Entrée OCCUPÉE inversée, active à 1
LP_PACK Entrée ACQUITTEMENT, active à 0
LP_POUTPA Entrée PLUS-DE-PAPIER, active à 1
LP_PSELECD Entrée SELECT, active à 1
LP_PERRORP Entrée ERREUR, active à 0
Référez vous au manuel de votre imprimante pour la
signification de ces signaux. Des bits non docu
mentés peuvent également être présents, suivant le
type d'imprimante.
Linux 18 Octobre 1996 2
LP(4) Manuel du programmeur Linux LP(4)
int ioctl(int fd, LPRESET)
Réinitialise l'imprimante. Pas d'argument.
FICHIERS
/dev/lp*
AUTEURS
Le driver d'imprimante a été écrit à l'origine par Jim
Weigand et Linus Torvalds. Il fut ensuite amélioré par
Michael K. Johnson. Le code d'interruption a été écrit
par by Nigel Gamble. Alan Cox l'a modularisé. LPCAREFUL,
LPABORT, LPGETSTATUS ont été ajoutés par Chris Metcalf.
VOIR AUSSI
mknod(1), chown(1), chmod(1), tunelp(8), lpcntl(8)
TRADUCTION
Christophe Blaess, 1997.
Linux 18 Octobre 1996 3