这个函数是相当于在event_dispatch()中调用的那个函数的真实面目,传递给这个函数的参数中有event_base,还有一个arg买这个arg在这里就是struct epollop.还有一个时间值。
static int
192 epoll_dispatch(struct event_base *base, void *arg, struct timeval *tv)
193 {
194 struct epollop *epollop = arg;
195 struct epoll_event *events = epollop->events;
196 struct evepoll *evep;
197 int i, res, timeout = -1;
198
199 if (tv != NULL)
200 timeout = tv->tv_sec * 1000 + (tv->tv_usec + 999) / 1000;
201
202 if (timeout > MAX_EPOLL_TIMEOUT_MSEC) {
203 /* Linux kernels can wait forever if the timeout is too big;
204 * see comment on MAX_EPOLL_TIMEOUT_MSEC. */
205 timeout = MAX_EPOLL_TIMEOUT_MSEC;
206 }
207
208 res = epoll_wait(epollop->epfd, events, epollop->nevents, timeout);
209
210 if (res == -1) {
211 if (errno != EINTR) {
212 event_warn(