From 0798d54b4fc28be881e2c4012663b1461bc85ba7 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 3 Feb 2005 11:25:52 +0000 Subject: r5195: most events don't need the time of the event, so save a gettimeofday() call and just use timeval_current() when its actually needed (This used to be commit 236403cc4dc2924ed6a898acae0bb44cc1688dcc) --- source4/lib/events.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) (limited to 'source4/lib/events.c') diff --git a/source4/lib/events.c b/source4/lib/events.c index a478fc8a41..4907a60f01 100644 --- a/source4/lib/events.c +++ b/source4/lib/events.c @@ -359,7 +359,6 @@ static int event_loop_epoll(struct event_context *ev, struct timeval *tvalp) struct epoll_event events[maxevents]; uint32_t destruction_count = ev->destruction_count; int timeout = -1; - struct timeval t; if (tvalp) { timeout = (tvalp->tv_usec / 1000) + (tvalp->tv_sec*1000); @@ -367,7 +366,7 @@ static int event_loop_epoll(struct event_context *ev, struct timeval *tvalp) ret = epoll_wait(ev->epoll_fd, events, maxevents, timeout); - if (ret == -1) { + if (ret == -1 && errno != EINTR) { epoll_fallback_to_select(ev, "epoll_wait() failed"); return -1; } @@ -377,8 +376,6 @@ static int event_loop_epoll(struct event_context *ev, struct timeval *tvalp) return 0; } - t = timeval_current(); - for (i=0;ihandler(ev, fde, t, flags, fde->private); + fde->handler(ev, fde, flags, fde->private); if (destruction_count != ev->destruction_count) { break; } @@ -451,7 +448,6 @@ static int event_loop_select(struct event_context *ev, struct timeval *tvalp) } if (selrtn > 0) { - struct timeval t = timeval_current(); /* at least one file descriptor is ready - check which ones and call the handler, being careful to allow the handler to remove itself when called */ @@ -460,7 +456,7 @@ static int event_loop_select(struct event_context *ev, struct timeval *tvalp) if (FD_ISSET(fe->fd, &r_fds)) flags |= EVENT_FD_READ; if (FD_ISSET(fe->fd, &w_fds)) flags |= EVENT_FD_WRITE; if (flags) { - fe->handler(ev, fe, t, flags, fe->private); + fe->handler(ev, fe, flags, fe->private); if (destruction_count != ev->destruction_count) { break; } @@ -472,7 +468,7 @@ static int event_loop_select(struct event_context *ev, struct timeval *tvalp) } /* - do a single event loop using the events defined in ev this function + do a single event loop using the events defined in ev */ int event_loop_once(struct event_context *ev) { -- cgit