epoll_wait - Attendre un évément sur un descripteur epoll.
Attendre 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.
Jusqu'à
maxevents
événements sont renvoyés par
epoll_wait(2).
Le paramètre
maxevents
doit être supérieur à zéor. En spécifiant
-1 comme valeur de
timeout,
epoll_wait(2)
attendra indéfiniment, alors qu'un
timeout
nul fera revenir
epoll_wait(2)
immédiatement, même si aucun événement n'est disponible (code de retour nul)
La
struct 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énement 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.
Lorrsqu'il réussit, l'appel
epoll_wait(2)
renvoie le nombe de descritpeurs 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(2)
renvoie -1 et
errno
contient le code approprié.
Christophe Blaess, 2003.