Provided by: manpages-fr-dev_3.57d1p1-1_all bug

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(7) 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'argument timeout définit le temps minimal, en milliseconde, pendant lequel epoll_wait()  attendra  (cet
       intervalle  sera  arrondi  à la granularité de l'horloge système, et les délais d'ordonnancement du noyau
       signifient que l'intervalle de blocage pourrait être dépassé d'une petite quantité).  Un  timeout  de  -1
       force  epoll_wait()  à  attendre  indéfiniment,  alors  qu'un  timeout  nul  force epoll_wait() à revenir
       immédiatement, même si aucun événement n'est disponible.

       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
       fichier 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, soit qu'aucun des événements  demandés  n'ait  lieu,
              soit que la temporisation timeout n'expire ; consultez 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_wait a été introduite dans le noyau Linux 2.6. La prise en charge par la glibc a été  ajoutée  dans
       la version 2.3.2.

       epoll_pwait  a  été  introduite dans le noyau Linux 2.6.19. La prise en charge par la glibc a été ajoutée
       dans la version 2.6.

CONFORMITÉ

       epoll_wait() est spécifique à Linux.

NOTES

       Alors qu'un thread est bloqué par un  appel  de  epoll_pwait(),  un  autre  thread  pourrait  ajouter  un
       descripteur de fichier à l'instance epoll attendue. Si le nouveau descripteur de fichier devient prêt, il
       forcera le déblocage de l'appel epoll_wait().

       Consultez select(2) pour une discussion sur ce qui pourrait arriver si un descripteur  de  fichier,  dans
       une instance epoll, surveillé par epoll_wait() est fermé dans un autre thread.

BOGUES

       Dans  les  noyaux  jusqu'à  la  version 2.6.37,  une  valeur timeout plus grande qu'environ LONG_MAX / HZ
       millisecondes est traitée comme -1 (c'est-à-dire  l'infini).  Ainsi,  par  exemple,  sur  un  système  où
       sizeof(long)  est 4 et la valeur HZ du noyau est 1000, cela signifie que les temps d'attente supérieurs à
       35,79 minutes sont traités comme l'infini.

VOIR AUSSI

       epoll_create(2), epoll_ctl(2), epoll(7)

COLOPHON

       Cette page fait partie de la publication 3.57 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

       Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par
       l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.

       Christophe       Blaess       <http://www.blaess.fr/christophe/>      (1996-2003),      Alain      Portal
       <http://manpagesfr.free.fr/> (2003-2006).  Julien  Cristau  et  l'équipe  francophone  de  traduction  de
       Debian (2006-2009).

       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> ».