epoll_wait

Autres langues

Langue: ja

Version: 2007-04-30 (openSuse - 09/10/07)

Section: 2 (Appels système)

̾Á°

epoll_wait, epoll_pwait - epoll ¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Î I/O ¥¤¥Ù¥ó¥È¤òÂÔ¤Ä

½ñ¼°


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

ÀâÌÀ

epoll_wait() ¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï¡¢ epoll ¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿ epfd ¤Î¥¤¥Ù¥ó¥È¤òºÇÂç timeout ¥ß¥êÉÃÂԤġ£ events ¤¬»Ø¤¹¥á¥â¥êÎΰè¤Ë¤Ï¡¢¸Æ¤Ó½Ð¤·Â¦¤¬ÍøÍѲÄǽ¤Ê¥¤¥Ù¥ó¥È¤¬³ÊǼ¤µ¤ì¤ë¡£ ºÇÂç maxevents ¸Ä¤Î¥¤¥Ù¥ó¥È¤¬ epoll_wait(2) ¤Ë¤è¤Ã¤ÆÊÖ¤µ¤ì¤ë¡£ maxevents °ú¤­¿ô¤Ï 0 ¤è¤êÂ礭¤¯¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ timeout ¤ò -1 ¤Ë»ØÄꤹ¤ë¤È¡¢ epoll_wait(2) ¤Ï̵¸Â¤ËÂԤġ£ ¤Þ¤¿ timeout ¤ò 0 ¤Ë»ØÄꤹ¤ë¤È¡¢ epoll_wait(2) ¤Ï¥¤¥Ù¥ó¥È¤¬ÍøÍѲÄǽ¤Ç¤Ê¤¯¤Æ¤â¡¢¤¹¤°¤ËÊÖ¤ë (ÊÖ¤êÃÍ¤Ï 0 ¤Ç¤¢¤ë)¡£ struct epoll_event ¤Ï°Ê²¼¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤ë:

typedef union epoll_data {

    void *ptr;

    int fd;

    __uint32_t u32;

    __uint64_t u64;

} epoll_data_t;



struct epoll_event {

    __uint32_t events;      /* epoll ¥¤¥Ù¥ó¥È */

    epoll_data_t data;      /* ¥æ¡¼¥¶¥Ç¡¼¥¿ÊÑ¿ô */

};

ÊÖ¤µ¤ì¤ë¹½Â¤ÂΤΠdata ¥á¥ó¥Ð¤Ë¤Ï¡¢¥æ¡¼¥¶¤¬ epoll_ctl(2) (EPOLL_CTL_ADD, EPOLL_CTL_MOD) ¤Ç»ØÄꤷ¤¿¥Ç¡¼¥¿¤¬³ÊǼ¤µ¤ì¤ë¡£ °ìÊý¡¢ events ¥á¥ó¥Ð¤Ë¤ÏÊÖ¤µ¤ì¤¿ÍøÍѲÄǽ¤Ê¥¤¥Ù¥ó¥È¤Î¥Ó¥Ã¥È¥Õ¥£¡¼¥ë¥É¤¬³ÊǼ¤µ¤ì¤ë¡£

epoll_pwait()

epoll_wait() ¤È epoll_pwait() ¤Î´Ø·¸¤Ï¡¢ select(2) ¤È pselect(2) ¤Î´Ø·¸¤ÈƱÍͤǤ¢¤ë¡£ pselect(2) ƱÍÍ¡¢ epoll_pwait() ¤ò»È¤¦¤È¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¡¢¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤¬½àÈ÷¤Ç¤­¤¿¾õÂ֤ˤʤ뤫¡¢ ¥·¥°¥Ê¥ë¤¬Ê᪤µ¤ì¤ë¤Þ¤Ç¡¢°ÂÁ´¤ËÂԤĤ³¤È¤¬¤Ç¤­¤ë¡£

°Ê²¼¤Î epoll_pwait() ¤Î¸Æ¤Ó½Ð¤·¤Ï¡¢




    ready = epoll_pwait(epfd, &events, maxevents, timeout, &sigmask);



¼¡¤Î¸Æ¤Ó½Ð¤·¤ò atomic ¤Ë¼Â¹Ô¤¹¤ë¤Î¤ÈÅù²Á¤Ç¤¢¤ë¡£



    sigset_t origmask;



    sigprocmask(SIG_SETMASK, &sigmask, &origmask);

    ready = epoll_wait(epfd, &events, maxevents, timeout);

    sigprocmask(SIG_SETMASK, &origmask, NULL);

ÊÖ¤êÃÍ

À®¸ù¤·¤¿¾ì¹ç¡¢ epoll_wait(2) ¤ÏÍ׵ᤵ¤ì¤¿ I/O ¤ËÂФ·¤Æ½àÈ÷¤¬¤Ç¤­¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Î¿ô¤òÊÖ¤¹¡£ ¤Þ¤¿Í׵ᤵ¤ì¤¿ timeout ¥ß¥êÉäδ֤˥ե¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤¬½àÈ÷¤Ç¤­¤Ê¤¤¾ì¹ç¤Ï¡¢0 ¤òÊÖ¤¹¡£ ¥¨¥é¡¼¤¬µ¯¤³¤Ã¤¿¾ì¹ç¡¢ epoll_wait(2) ¤Ï -1 ¤òÊÖ¤·¡¢ errno ¤òŬÀÚ¤ËÀßÄꤹ¤ë¡£

¥¨¥é¡¼

EBADF
epfd ¤¬Í­¸ú¤Ê¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ç¤Ê¤¤¡£
EFAULT
events ¤Ç»Ø¤µ¤ì¤ë¥á¥â¥êÎΰè¤Ë½ñ¤­¹þ¤ß¸¢¸Â¤Ç¥¢¥¯¥»¥¹¤Ç¤­¤Ê¤¤¡£
EINTR
Í׵ᤵ¤ì¤¿¤É¤Î¥¤¥Ù¥ó¥È¤âȯÀ¸¤»¤º¡¢¤«¤Ä timeout ¤Î´ü¸Â¤¬ÀÚ¤ì¤ëÁ°¤Ë¡¢¥·¥¹¥Æ¥à¥³¡¼¥ë¤¬¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¤Ë¤è¤Ã¤Æ³ä¤ê¹þ¤Þ¤ì¤¿¡£
EINVAL
epfd ¤¬ epoll ¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ç¤Ê¤¤¡£ ¤Þ¤¿¤Ï maxevents ¤¬ 0 °Ê²¼¤Ç¤¢¤ë¡£

¥Ð¡¼¥¸¥ç¥ó

epoll_pwait() ¤Ï¥«¡¼¥Í¥ë 2.6.19 ¤Ç Linux ¤ËÄɲ䵤줿¡£

epoll_pwait() ¤Î¥µ¥Ý¡¼¥È¤Ï glibc 2.6 °Ê¹ß¤ÇÄ󶡤µ¤ì¤Æ¤¤¤ë¡£

½àµò

epoll_wait(2) ¤Ï Linux Æȼ«¤Ç¤¢¤ê¡¢¥«¡¼¥Í¥ë 2.5.44 ¤ÇƳÆþ¤µ¤ì¤¿¡£

´ØÏ¢¹àÌÜ

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