Available in

(2) (2)/fr (2)/ja

Contents

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);

DESCRIPTION

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 [AT] debian.org> et l’équipe francophone de traduction de Debian.

Veuillez signaler toute erreur de traduction en écrivant à <debian−l10n−french [AT] lists.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> ».

COMMENTS

blog comments powered by Disqus