POLL(2) Manuel du programmeur Linux POLL(2)
NOM
poll - Attendre un évènement concernant un descripteur de
fichier.
SYNOPSIS
#include <linux/asm/poll.h>
int poll(struct pollfd *ufds, unsigned int nfds, int
délai);
DESCRIPTION
poll est une variation sur le thème de select(2). Il
utilise une table de nfds structures du type
struct pollfd {
int fd; /* Descripteur de fichier */
short events; /* Evènements attendus */
short revents; /* Evènements détectés */
};
et un délai en millisecondes. Une valeur négative indique
un délai infini. Le champ fd contient un descripteur de
fichier ouvert. Le champ events est un paramètre
d'entrée, un masque de bits indiquant les évènements qui
intéressent l'application. Le champ revents est un
paramètre de sortie, rempli par le noyau avec les
évènements qui se sont effectivement produits, du type
demandé, ou de l'une des valeurs POLLERR, POLLHUP ou POLL
NVAL. (Ces trois bits n'ont pas de signification dans la
demande events, et se trouvent positionnés dans la valeur
de retour revents si l'une des conditions correspondantes
se produit).
Si aucun evènement attendu (ni aucune erreur) ne s'est
déjà produit, le noyau attend leur occurence pendant time
out millisecondes. Les bits possibles pour ces masques
sont définis dans <sys/poll.h>:
#define POLLIN 0x0001 /* Données disponibles en lecture */
#define POLLPRI 0x0002 /* Données urgentes disponibles */
#define POLLOUT 0x0004 /* Une écriture bloquerait */
#define POLLERR 0x0008 /* Condition d'erreur */
#define POLLHUP 0x0010 /* Déconnexion */
#define POLLNVAL 0x0020 /* Requête invalide, fd pas ouvert */
Dans <asm/poll.h> se trouvent également les constantes
POLLRDNORM, POLLRDBAND, POLLWRNORM, POLLWRBAND, et
POLLMSG.
VALEUR RENVOYÉE
S'il réussit, poll renvoie une valeur positive représen
tant le nombre de structures ayant un champ revents non-
nul. C'est à dire le nombre de structures pour lesquels un
évènement attendu, ou une erreur, s'est produit. Une
valeur de retour nulle indique un dépassement du délai
d'attente. S'il échoue, poll renvoie -1, et errno con
tient le code d'erreur.
Linux 2.1.23 10 Décembre 1997 1
POLL(2) Manuel du programmeur Linux POLL(2)
ERREURS
ENOMEM Pas assez de mémoire pour allouer la table des
descripteurs de fichiers.
EFAULT La table fournie en argument n'est pas dans
l'espace d'adressage du processus appelant.
EINTR Un signal a été reçu avant qu'un évènement
intéressant ne se produise.
CONFORMITÉ
XPG4-UNIX
NOTES
L'appel système poll() a été introduit dans la version
2.1.23 du noyau Linux. La fonction de bibliothèque poll()
est apparue dans la version 5.4.28 de la libc, et fournit
une émulation basée sur l'appel système select() si le
noyau n'a pas d'appel système poll().
VOIR AUSSI
select(2)
TRADUCTION
Christophe Blaess, 1997.
Linux 2.1.23 10 Décembre 1997 2
