| poll | |||
Nompoll - 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); Descriptionpoll 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 POLLNVAL. (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 timeout 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éeS'il réussit, poll renvoie une valeur positive représentant 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 contient le code d'erreur.Erreurs
ConformitéXPG4-UNIXNotesL'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 Aussiselect(2)
TraductionChristophe Blaess, 1997.
|