NOM
epoll_wait, epoll_pwait - Attendre un événement sur un descripteur
epoll
SYNOPSIS
#include <sys/epoll.h>
int epoll_wait(int epfd, struct epoll_event *events,
int maxevents, int timeout);
int epoll_pwait(int epfd, struct epoll_event *events,
int maxevents, int timeout,
const sigset_t *sigmask);
L’appel système epoll_wait() attend un événement sur l’instance epoll
indiquée par le descripteur epfd. La zone mémoire pointée par events
contiendra les événements disponibles pour l’appelant. Un maximum de
maxevents événements sont renvoyés par epoll_wait(). Le paramètre
maxevents doit être supérieur à zéro.
L’appel système attend pendant une durée maximale de timeout
millisecondes. En spécifiant -1 comme valeur de timeout, epoll_wait()
attendra indéfiniment, alors qu’un timeout nul fera revenir
epoll_wait() immédiatement, même si aucun événement n’est disponible
(avec un code de retour nul).
La structure epoll_event est définie ainsi :
typedef union epoll_data {
void *ptr;
int fd;
uint32_t u32;
uint64_t u64;
} epoll_data_t;
struct epoll_event {
uint32_t events; /* Événements epoll */
epoll_data_t data; /* Variable utilisateur */
};
Le champ data de la structure renvoyée contiendra les mêmes données que
lors de l’appel epoll_ctl(2) (EPOLL_CTL_ADD, EPOLL_CTL_MOD) tandis que
le champ events contiendra le masque de bit des événements disponibles.
epoll_pwait()
La relation entre epoll_wait() et epoll_pwait() est similaire à celle
entre select(2) et pselect(2) : de même que pselect(2), epoll_pwait()
permet à une application d’attendre de façon sûre qu’un descripteur de
fichiers soit prêt ou qu’un signal arrive.
L’appel à epoll_pwait() suivant :
ready = epoll_pwait(epfd, &events, maxevents, timeout, &sigmask);
est équivalent à exécuter de façon atomique les appels suivants :
sigset_t origmask;
sigprocmask(SIG_SETMASK, &sigmask, &origmask);
ready = epoll_wait(epfd, &events, maxevents, timeout);
sigprocmask(SIG_SETMASK, &origmask, NULL);
Le paramètre sigmask peut valoir NULL, auquel cas, epoll_pwait() est
équivalent à epoll_wait().
VALEUR RENVOYÉE
Lorsqu’il réussit, l’appel epoll_wait() renvoie le nombre de
descripteurs prêts pour les E/S demandées, ou zéro si aucun descripteur
n’est devenu prêt pendant la durée timeout millisecondes. Si une erreur
se produit, epoll_wait() renvoie -1 et errno contient le code
approprié.
ERREURS
EBADF epfd n’est pas un descripteur de fichier valable.
EFAULT La zone mémoire pointée par events n’est pas accessible en
écriture.
EINTR L’appel a été interrompu par un signal avant qu’aucun des
événements demandés n’ait lieu ou que la temporisation timeout
n’expire ; voir signal(7).
EINVAL Le descripteur epfd fourni n’est pas un descripteur epoll, ou le
paramètre maxevents est inférieur ou égal à zéro.
VERSIONS
epoll_pwait() a été ajouté au noyau Linux dans sa version 2.6.19.
Le support pour epoll_pwait() est fourni à partir de la glibc 2.6.
CONFORMITÉ
epoll_wait() est spécifique à Linux, et a été introduit dans le noyau
2.5.44.
VOIR AUSSI
epoll_create(2), epoll_ctl(2), epoll(7)
COLOPHON
Cette page fait partie de la publication 3.23 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent être trouvées à l’adresse
http://www.kernel.org/doc/man-pages/.
TRADUCTION
Cette page de manuel a été traduite et mise à jour par Christophe
Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
disposition sur http://manpagesfr.free.fr/.
Les mises à jour et corrections de la version présente dans Debian sont
directement gérées par Julien Cristau <jcristau@debian.org> et l’équipe
francophone de traduction de Debian.
Veuillez signaler toute erreur de traduction en écrivant à
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document
en utilisant la commande « man -L C <section> <page_de_man> ».