On 12/22/2012 01:23 AM, Hitoshi Mitake wrote: > + * we have to retrieve the number of prioritized events here, because > + * nr_prioritized_events is increased in event handlers > + */ > + prioritized = nr_prioritized_events; > > - nr = epoll_wait(efd, events, ARRAY_SIZE(events), TICK * 1000); > + nr = epoll_wait(efd, polled_events, nr_events, TICK * 1000); > if (nr < 0) { > if (errno == EINTR) > return; > eprintf("epoll_wait failed: %m\n"); > exit(1); > } else if (nr) { > + if (prioritized) > + qsort(polled_events, nr, sizeof(struct epoll_event), > + epoll_event_cmp); It seems that we need to call qsort every time since we nr_prioritized_events is always > 0 for now. I guess we need a better method to test need_sort case to optimize for most cases that don't need_sort. Thanks, Yuan |