epoll_ctl

Autres langues

Langue: ja

Version: 2002-10-23 (openSuse - 09/10/07)

Section: 2 (Appels système)

̾Á°

epoll_ctl - epoll ¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤òÀ©¸æ¤¹¤ë

½ñ¼°

#include <sys/epoll.h>

int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event)

ÀâÌÀ

Âоݥե¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿ fd ¤Ø¤ÎÁàºî op ¤Î¼Â¹Ô¤òÍ׵ᤷ¡¢ epoll ¥Ç¥£¥¹¥¯¥ê¥×¥¿ epfd ¤òÀ©¸æ¤¹¤ë¡£ event ¤Ï¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿ fd ¤Ë¥ê¥ó¥¯¤µ¤ì¤¿¥ª¥Ö¥¸¥§¥¯¥È¤òµ­½Ò¤¹¤ë¡£ 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;      /* ¥æ¡¼¥¶¥Ç¡¼¥¿ÊÑ¿ô */

};

events ¥á¥ó¥Ð¤Ï¡¢°Ê²¼¤Î¤è¤¦¤Ê»ÈÍѲÄǽ¤Ê¥¤¥Ù¥ó¥È¥¿¥¤¥×¤ò»È¤Ã¤Æ¹½À®¤µ¤ì¤¿ ¥Ó¥Ã¥È¥»¥Ã¥È¤Ç¤¢¤ë¡£

EPOLLIN
´ØÏ¢ÉÕ¤±¤é¤ì¤¿¥Õ¥¡¥¤¥ë¤ËÂФ·¤Æ¡¢ read(2) Áàºî¤¬²Äǽ¤Ç¤¢¤ë¡£
EPOLLOUT
´ØÏ¢ÉÕ¤±¤é¤ì¤¿¥Õ¥¡¥¤¥ë¤ËÂФ·¤Æ¡¢ write(2) Áàºî¤¬²Äǽ¤Ç¤¢¤ë¡£
EPOLLRDHUP (¥«¡¼¥Í¥ë 2.6.17 °Ê¹ß)
¥¹¥È¥ê¡¼¥à¥½¥±¥Ã¥È¤Î¾ü¤¬¡¢¥³¥Í¥¯¥·¥ç¥ó¤Î close ¡¢ ¤Þ¤¿¤Ï¥³¥Í¥¯¥·¥ç¥ó¤Î½ñ¤­¹þ¤ß¦¤Î shutdown ¤ò¹Ô¤Ã¤¿¡£ (¤³¤Î¥Õ¥é¥°¤ò»È¤¦¤È¡¢¥¨¥Ã¥¸¥È¥ê¥¬¤Î´Æ»ë¤ò¹Ô¤¦¾ì¹ç¤Ë¡¢ ÄÌ¿®¤Î¤â¤¦°ìü¤¬ÊĤ¸¤é¤ì¤¿¤³¤È¤ò¸¡ÃΤ¹¤ë¥³¡¼¥É¤ò Èó¾ï¤Ë´Ê·é¤Ë½ñ¤¯¤³¤È¤¬¤Ç¤­¤ë¡£)
EPOLLPRI
read(2) Áàºî¤¬²Äǽ¤Ê¶ÛµÞ (urgent) ¥Ç¡¼¥¿¤¬¤¢¤ë¡£
EPOLLERR
´ØÏ¢ÉÕ¤±¤é¤ì¤¿¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ë¥¨¥é¡¼¾ò·ï¤¬µ¯¤³¤Ã¤¿¡£ epoll_wait(2) ¤Ï¾ï¤Ë¤³¤Î¥¤¥Ù¥ó¥È¤òÂԤĤΤǡ¢ events ¤ËÀßÄꤹ¤ëɬÍפϤʤ¤¡£
EPOLLHUP
´ØÏ¢ÉÕ¤±¤é¤ì¤¿¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ë¥Ï¥ó¥°¥¢¥Ã¥×¤¬µ¯¤³¤Ã¤¿¡£ epoll_wait(2) ¤Ï¾ï¤Ë¤³¤Î¥¤¥Ù¥ó¥È¤òÂԤĤΤǡ¢ events ¤ËÀßÄꤹ¤ëɬÍפϤʤ¤¡£
EPOLLET
´ØÏ¢ÉÕ¤±¤é¤ì¤¿¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ë ¥¨¥Ã¥¸¥È¥ê¥¬Æ°ºî (Edge Triggered behaviour) ¤òÀßÄꤹ¤ë¡£ epoll ¤Î¥Ç¥Õ¥©¥ë¥È¤ÎÆ°ºî¤Ï¡¢¥ì¥Ù¥ë¥È¥ê¥¬ (Level Triggered) ¤Ç¤¢¤ë¡£ ¥¨¥Ã¥¸¥È¥ê¥¬¤È¥ì¥Ù¥ë¥È¥ê¥¬¤Ë¤è¤ë¥¤¥Ù¥ó¥ÈʬÇÛµ¡¹½ (event distribution architectures) ¤Ë¤Ä¤¤¤Æ¤Î¾ÜºÙ¤Ê¾ðÊó¤Ï¡¢ epoll(7) ¤ò»²¾È¤¹¤ë¤³¤È¡£
EPOLLONESHOT (¥«¡¼¥Í¥ë 2.6.2 °Ê¹ß)
´ØÏ¢ÉÕ¤±¤é¤ì¤¿¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ë °ì·âÆ°ºî (One-Shot behaviour) ¤òÀßÄꤹ¤ë¡£ ¤³¤ì¤Ï¥¤¥Ù¥ó¥È¤¬ epoll_wait(2) ¤Ë¤è¤Ã¤Æ°ú¤­½Ð¤µ¤ì¤¿¸å¡¢ ´ØÏ¢ÉÕ¤±¤é¤ì¤¿¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤¬ÆâÉôŪ¤ËÇË´þ¤µ¤ì¡¢ epoll ¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ë¤è¤Ã¤Æ¥¤¥Ù¥ó¥È¤¬Êó¹ð¤µ¤ì¤Ê¤¯¤Ê¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡£ ¿·¤·¤¤¥¤¥Ù¥ó¥È¥Þ¥¹¥¯¤Ç¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤òºÆÅÙÍ­¸ú¤Ë¤¹¤ë¤¿¤á¤Ë¤Ï¡¢ epoll_ctl(2) ¤Ë EPOLL_CTL_MOD ¤ò»ØÄꤷ¤Æ¸Æ¤Ó½Ð¤µ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£

epoll ¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ï¡¢ poll(2) ¤ò¥µ¥Ý¡¼¥È¤¹¤ëÁ´¤Æ¤Î¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤ò¥µ¥Ý¡¼¥È¤¹¤ë¡£ op °ú¤­¿ô¤Ë»ØÄê¤Ç¤­¤ëÍ­¸ú¤ÊÃͤϡ¢°Ê²¼¤ÎÄ̤ê:

EPOLL_CTL_ADD
Âоݥե¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿ fd ¤ò epoll ¥Ç¥£¥¹¥¯¥ê¥×¥¿ epfd ¤ËÄɲä·¡¢¥¤¥Ù¥ó¥È event ¤ò fd ¤Ë¥ê¥ó¥¯¤µ¤ì¤¿ÆâÉô¥Õ¥¡¥¤¥ë¤Ë´ØÏ¢ÉÕ¤±¤ë¡£
EPOLL_CTL_MOD
¥¤¥Ù¥ó¥È event ¤òÂоݥե¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿ fd ¤Ë´ØÏ¢ÉÕ¤±¤ë¤è¤¦¤ËÊѹ¹¤¹¤ë¡£
EPOLL_CTL_DEL
Âоݥե¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿ fd ¤ò epoll ¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿ epfd ¤«¤éºï½ü¤¹¤ë¡£ event ¤Ï̵»ë¤µ¤ì¤ë¤Î¤Ç¡¢NULL ¤ËÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤ë (⤷¡¢²¼µ­¤Î¡Ö¥Ð¥°¡×¤Î¾Ï¤ò»²¾È¤Î¤³¤È)¡£

ÊÖ¤êÃÍ

À®¸ù¤·¤¿¾ì¹ç¡¢ epoll_ctl(2) ¤Ï 0 ¤òÊÖ¤¹¡£ ¥¨¥é¡¼¤¬µ¯¤³¤Ã¤¿¾ì¹ç¡¢ epoll_ctl(2) ¤Ï -1 ¤òÊÖ¤·¡¢ errno ¤òŬÀÚ¤ËÀßÄꤹ¤ë¡£

¥¨¥é¡¼

EBADF
epfd ¤« fd ¤¬Í­¸ú¤Ê¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ç¤Ê¤¤¡£
EEXIST
op ¤¬ EPOLL_CTL_ADD ¤Ç¤¢¤ê¡¢¤«¤ÄÍ¿¤¨¤é¤ì¤¿¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿ fd ¤¬´û¤Ë epfd ¤Ë¸ºß¤¹¤ë¡£
EINVAL
epfd ¤¬ epoll ¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ç¤Ê¤¤¡£ ¤Þ¤¿¤Ï fd ¤¬ epfd ¤ÈƱ°ì¤Ç¤¢¤ë¡£ ¤Þ¤¿¤ÏÍ׵ᤵ¤ì¤¿Áàºî op ¤¬¤³¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¡£
ENOENT
op ¤¬ EPOLL_CTL_MOD ¤Þ¤¿¤Ï EPOLL_CTL_DEL ¤Ç¤¢¤ê¡¢¤«¤Ä fd ¤¬ epfd ¤Ë¸ºß¤·¤Ê¤¤¡£
ENOMEM
Í׵ᤵ¤ì¤¿ op À©¸æÁàºî¤ò°·¤¦¤Î¤Ë½½Ê¬¤Ê¥á¥â¥ê¤¬¤Ê¤¤¡£
EPERM
Âоݥե¡¥¤¥ë fd ¤¬ epoll ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤¡£

½àµò

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

¥Ð¥°

2.6.9 ¤è¤êÁ°¤Î¥«¡¼¥Í¥ë¤Ç¤Ï¡¢ EPOLL_CTL_DEL Áàºî¤ÎºÝ¡¢°ú¤­¿ô event ¤Ë (¤¿¤È¤¨Ìµ»ë¤µ¤ì¤ë¾ì¹ç¤Ç¤¢¤Ã¤Æ¤â) NULL ¤Ç¤Ê¤¤¥Ý¥¤¥ó¥¿¤òÅϤ¹É¬Íפ¬¤¢¤Ã¤¿¡£ ¥«¡¼¥Í¥ë 2.6.9 °Ê¹ß¤Ç¤Ï¡¢ EPOLL_CTL_DEL ¤ò»È¤¦ºÝ¤Ë event ¤Ë NULL ¤ò»ØÄê¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£

´ØÏ¢¹àÌÜ

epoll_create(2), epoll_wait(2), poll(2), epoll(7)