summaryrefslogtreecommitdiff
path: root/source4/lib/events.c
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2005-02-03 11:25:52 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:09:30 -0500
commit0798d54b4fc28be881e2c4012663b1461bc85ba7 (patch)
tree532a93a578fd021c827bbb6bf5c65525b77671b7 /source4/lib/events.c
parent6e0a56f73b7f75e45d97a574cf6fd1fc4f4bff9b (diff)
downloadsamba-0798d54b4fc28be881e2c4012663b1461bc85ba7.tar.gz
samba-0798d54b4fc28be881e2c4012663b1461bc85ba7.tar.bz2
samba-0798d54b4fc28be881e2c4012663b1461bc85ba7.zip
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)
Diffstat (limited to 'source4/lib/events.c')
-rw-r--r--source4/lib/events.c12
1 files changed, 4 insertions, 8 deletions
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;i<ret;i++) {
struct fd_event *fde = talloc_get_type(events[i].data.ptr,
struct fd_event);
@@ -391,7 +388,7 @@ static int event_loop_epoll(struct event_context *ev, struct timeval *tvalp)
if (events[i].events & EPOLLIN) flags |= EVENT_FD_READ;
if (events[i].events & EPOLLOUT) flags |= EVENT_FD_WRITE;
if (flags) {
- fde->handler(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)
{