1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180
|
.\"
.\" epoll by Davide Libenzi ( efficient event notification retrieval )
.\" Copyright (C) 2003 Davide Libenzi
.\"
.\" This program is free software; you can redistribute it and/or modify
.\" it under the terms of the GNU General Public License as published by
.\" the Free Software Foundation; either version 2 of the License, or
.\" (at your option) any later version.
.\"
.\" This program is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public License
.\" along with this program; if not, write to the Free Software
.\" Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
.\"
.\" Davide Libenzi <davidel@xmailserver.org>
.\"
.\" 2007-04-30: mtk, Added description of epoll_pwait()
.\"
.\" Japanese Version Copyright (c) 2004-2005 Yuichi SATO
.\" all rights reserved.
.\" Translated Wed Jun 16 03:05:40 JST 2004
.\" by Yuichi SATO <ysato444@yahoo.co.jp>
.\" Updated & Modified Tue Apr 19 07:05:42 JST 2005 by Yuichi SATO
.\" Updated 2007-06-02, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v2.51
.\"
.TH EPOLL_WAIT 2 2007-12-19 "Linux" "Linux Programmer's Manual"
.SH ̾
epoll_wait, epoll_pwait \- epoll եǥץ I/O ٥ȤԤ
.SH
.nf
.B #include <sys/epoll.h>
.sp
.BI "int epoll_wait(int " epfd ", struct epoll_event *" events ,
.BI " int " maxevents ", int " timeout );
.BI "int epoll_pwait(int " epfd ", struct epoll_event *" events ,
.BI " int " maxevents ", int " timeout ,
.BI " const sigset_t *" sigmask );
.fi
.SH
.BR epoll_wait ()
ƥॳϡ
.B epoll
եǥץ
.I epfd
Υ٥Ȥ
.I timeout
ߥԤġ
.I events
ؤΰˤϡƤӽФ¦Ѳǽʥ٥ȤǼ롣
.I maxevents
ĤΥ٥Ȥ
.BR epoll_wait ()
ˤä֤롣
.I maxevents
0 礭ʤФʤʤ
.I timeout
\-1 ˻ꤹȡ
.BR epoll_wait ()
̵¤Ԥġ
ޤ
.I timeout
0 ˻ꤹȡ
.BR epoll_wait ()
ϥ٥ȤѲǽǤʤƤ⡢֤ (֤ͤ 0 Ǥ)
.I struct epoll_event
ϰʲΤ褦:
.sp
.in +4n
.nf
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; /* 桼ǡѿ */
};
.fi
.in
֤빽¤Τ
.I data
Фˤϡ桼
.BR epoll_ctl (2)
.RB ( EPOLL_CTL_ADD ", " EPOLL_CTL_MOD )
ǻꤷǡǼ롣
.I events
Фˤ֤줿Ѳǽʥ٥ȤΥӥåȥեɤǼ롣
.SS epoll_pwait()
.BR epoll_wait ()
.BR epoll_pwait ()
δطϡ
.BR select (2)
.BR pselect (2)
δطƱͤǤ롣
.BR pselect (2)
Ʊ͡
.BR epoll_pwait ()
ȤȡץꥱϡեǥץǤ֤ˤʤ뤫
ʥ뤬ªޤǡԤĤȤǤ롣
ʲ
.BR epoll_pwait ()
θƤӽФϡ
.nf
ready = epoll_pwait(epfd, &events, maxevents, timeout, &sigmask);
.fi
θƤӽФ
.I atomic
˼¹ԤΤǤ롣
.nf
sigset_t origmask;
sigprocmask(SIG_SETMASK, &sigmask, &origmask);
ready = epoll_wait(epfd, &events, maxevents, timeout);
sigprocmask(SIG_SETMASK, &origmask, NULL);
.fi
.SH ֤
硢
.BR epoll_wait ()
ᤵ줿 I/O ФƽǤƤեǥץο֤
ޤᤵ줿
.I timeout
ߥäδ֤˥եǥץǤʤϡ0 ֤
顼ä硢
.BR epoll_wait ()
\-1 ֤
.I errno
Ŭڤꤹ롣
.SH 顼
.TP
.B EBADF
.I epfd
ͭʥեǥץǤʤ
.TP
.B EFAULT
.I events
ǻؤΰ˽߸¤ǥǤʤ
.TP
.B EINTR
ᤵ줿ɤΥ٥Ȥȯ
.I timeout
δ¤ڤˡƥॳ뤬ʥϥɥˤäƳޤ줿
.TP
.B EINVAL
.I epfd
.B epoll
եǥץǤʤ
ޤ
.I maxevents
0 ʲǤ롣
.SH С
.BR epoll_pwait ()
ϥͥ 2.6.19 Linux ɲä줿
.BR epoll_pwait ()
glibc ǤΥݡȤ glibc 2.6 ʹߤƤ롣
.SH
.BR epoll_wait ()
Linux ȼǤꡢͥ 2.5.44 Ƴ줿
.\" ե Linux ͥ 2.5.66 dzꤵ٤Ǥ롣
.SH Ϣ
.BR epoll_create (2),
.BR epoll_ctl (2),
.BR epoll (7)
|