EPOLL_WAIT
Section : Manuel du programmeur Linux (
2)
Mise à jour de la version anglaise : 23 avril 2008
Index
Menu principal
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 le descripteur
epoll
epfd
pendant une durée maximale de
timeout
millisecondes.
La zone mémoire pointée par
events
contiendra les événements disponibles pour l'appelant.
Un maximum
maxevents
événements sont renvoyés par
epoll_wait().
Le paramètre
maxevents
doit être supérieur à zéro.
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 (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 analogue à celle entre
select(2)
et
pselect(2) :
de même que
pselect(2),
epoll_pwait()
permet à une application d'attendre de façon sure qu'un
descripteur de fichier soit prêt ou qu'un signal soit intercepté.
L'appel
epoll_pwait()
suivant :
ready = epoll_pwait(epfd, &events, maxevents, timeout, &sigmask);
est équivalent à exécuter
atomiquement
les appels suivants :
sigset_t origmask;
sigprocmask(SIG_SETMASK, &sigmask, &origmask);
ready = epoll_wait(epfd, &events, maxevents, timeout);
sigprocmask(SIG_SETMASK, &origmask, NULL);
L'arguement
sigmask
peut être 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 valide.
- EFAULT
-
La zone mémoire pointée par
events
n'est pas accessible en écriture.
- EINTR
-
L'appel a été interrompu par un gestionnaire de signaux avant que l'un des
événements demandés ne survienne, ou bien la temporisation
timeout
a expiré ; 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é à Linux dans le noyau 2.6.19.
La prise en charge de
epoll_pwait()
est assurée depuis la glibc 2.6.
CONFORMITÉ
epoll_wait()
est spécifique à Linux et a été introduit dans Linux 2.5.44.
VOIR AUSSI
epoll_create(2),
epoll_ctl(2),
epoll(7)
TRADUCTION
Ce document est une traduction réalisée par Christophe Blaess
<http://www.blaess.fr/christophe/> le 25 juillet 2003
et révisée le 17 juillet 2008.
L'équipe de traduction a fait le maximum pour réaliser une adaptation
française de qualité. La version anglaise la plus à jour de ce document est
toujours consultable via la commande : « LANG=C man 2 epoll_wait ».
N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute
erreur dans cette page de manuel.
Index
- NOM
-
- SYNOPSIS
-
- DESCRIPTION
-
- epoll_pwait()
-
- VALEUR RENVOYÉE
-
- ERREURS
-
- VERSIONS
-
- CONFORMITÉ
-
- VOIR AUSSI
-
- TRADUCTION
-
Dernière mise à jour : 17 juillet 2008