LP(4)

NOM
lp - Imprimantes paralleles.

SYNOPSIS
#include <linux/lp.h>

CONFIGURATION
lp[0–2] sont des peripheriques caracteres pour les imprimantes a liaison parallele. Ils ont un numero majeur 6 et un numero mineur 0–2. Le numero mineur correspond aux ports d'imprimantes d'adresse de base 0x03bc, 0x0378 et 0x0278. Habituellement ils ont un mode d'acces 220 et un proprietaire root.lp. On peut utiliser les ports paralleles soit en scrutation (polling) soit en interruption. L'utilisation en interruption est surtout recommandee avec un haut trafic (ex : imprimante laser). Pour les imprimantes matricielles classiques, la scrutation suffira. Par defaut le systeme utilise la scrutation.

DESCRIPTION
Les appels systemes ioctl(2) suivants sont supportes :

int ioctl(int fd, LPTIME, int arg)
    fixe la duree pendant laquelle le driver s'endort avant de reverifier l'etat de l'imprimante apres que le buffer ait ete rempli. Avec une imprimante rapide on peut diminuer ce delai, avec une imprimante lente on peut l'augmenter. La duree est indiquee dans arg, en centiemes de secondes. La valeur par defaut 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'iterations d'attente active que le driver en scrutation effectue alors qu'il attend que l'imprimante soit prete. Si l'impression est trop lente, augmenter cette valeur, si le systeme ralentit trop, la diminuer. Le nombre est indique dans arg, la valeur par defaut est 1000. Cela n'influe que sur le diver en scrutation.

int ioctl(int fd, LPABORT, int arg)
    Si arg vaut 0, le driver reessaiera en cas d'erreur d'impression, sinon il abandonnera. La valeur par defaut est 0.

int ioctl(int fd, LPABORTOPEN, int arg)
    Si arg vaut 0, open(2) sera annule en cas d'erreur, sinon l'erreur sera ignoree. Par defaut elle est ignoree.

int ioctl(int fd, LPCAREFUL, int arg)
    Si arg vaut 0, on bloquera l'ecriture sur le port parallele au cas ou les broches erreur, plus-de-papier, ou imprimante-hors-ligne sont validees. Sinon ces signaux seront ignores. Par defaut ils sont ignores.

int ioctl(int fd, LPWAIT, int arg)
    Indique le nombre d'iterations d'attente active a effectuer avant d'activer la broche STROBE pour que l'imprimante accepte le caractere ecrit, et le nombre d'iterations a effectuer avant d'eteindre a nouveau la broche STROBE. Les specifications indique que ce delai devrait etre de 0,5 micro-secondes, mais l'experience a montre que le delai induit par le code du driver est suffisant. La valeur est indiquee dans arg, elle vaut 0 par defaut. Ceci concerne autant le gestionnaire en interruption que celui en scrutation.

int ioctl(int fd, LPSETIRQ, int arg)
    Cet ioctl() necessite des privileges Super-User. Son argument est une nouvelle IRQ pour l'imprimante. Comme effet de bords, l'imprimante est reinitialisee. Si arg vaut 0, le gestionnaire en scrutation sera utilise, ce qui est le comportement par defaut.

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 | Entree OCCUPEE inversee, active a 1
    LP_PACK | Entree ACQUITTEMENT, active a 0
    LP_POUTPA | Entree PLUS-DE-PAPIER, active a 1
    LP_PSELECD | Entree SELECT, active a 1
    LP_PERRORP | Entree ERREUR, active a 0

    Referez vous au manuel de votre imprimante pour la signification de ces signaux. Des bits non documentes peuvent egalement etre presents, suivant le type d'imprimante.

int ioctl(int fd, LPRESET)
    Reinitialise l'imprimante. Pas d'argument.

FICHIERS
/dev/lp*

AUTEURS
Le driver d'imprimante a ete ecrit a l'origine par Jim Weigand et Linus Torvalds. Il fut ensuite ameliore par Michael K. Johnson. Le code d'interruption a ete ecrit par by Nigel Gamble. Alan Cox l'a modularise. LPCAREFUL, LPABORT, LPGETSTATUS ont ete ajoutes par Chris Metcalf.

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