From: Timo Sirainen Date: Fri, 17 Aug 2018 08:29:30 +0000 (+0300) Subject: lib: Add and use io_loop_run_get_wait_time() X-Git-Tag: 2.3.9~1537 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=673e0aa8704a8f1b16eb95e7a2c275097dcba254;p=thirdparty%2Fdovecot%2Fcore.git lib: Add and use io_loop_run_get_wait_time() This is going to be called just before running an ioloop iteration. The next commit improves its behavior. --- diff --git a/src/lib/ioloop-epoll.c b/src/lib/ioloop-epoll.c index cbba942ef1..5aac59a37a 100644 --- a/src/lib/ioloop-epoll.c +++ b/src/lib/ioloop-epoll.c @@ -175,7 +175,7 @@ void io_loop_handler_run_internal(struct ioloop *ioloop) i_assert(ctx != NULL); /* get the time left for next timeout task */ - msecs = io_loop_get_wait_time(ioloop, &tv); + msecs = io_loop_run_get_wait_time(ioloop, &tv); events = array_get_modifiable(&ctx->events, &events_count); if (ioloop->io_files != NULL && events_count > ctx->deleted_count) { diff --git a/src/lib/ioloop-kqueue.c b/src/lib/ioloop-kqueue.c index 9c22b748d9..3050c61af6 100644 --- a/src/lib/ioloop-kqueue.c +++ b/src/lib/ioloop-kqueue.c @@ -119,7 +119,7 @@ void io_loop_handler_run_internal(struct ioloop *ioloop) int ret, i, msecs; /* get the time left for next timeout task */ - msecs = io_loop_get_wait_time(ioloop, &tv); + msecs = io_loop_run_get_wait_time(ioloop, &tv); ts.tv_sec = tv.tv_sec; ts.tv_nsec = tv.tv_usec * 1000; diff --git a/src/lib/ioloop-poll.c b/src/lib/ioloop-poll.c index 9f208192e7..4016dae6a3 100644 --- a/src/lib/ioloop-poll.c +++ b/src/lib/ioloop-poll.c @@ -151,7 +151,7 @@ void io_loop_handler_run_internal(struct ioloop *ioloop) bool call; /* get the time left for next timeout task */ - msecs = io_loop_get_wait_time(ioloop, &tv); + msecs = io_loop_run_get_wait_time(ioloop, &tv); #ifdef _AIX if (msecs > 1000) { /* AIX seems to check IO_POLL_ERRORs only at the beginning of diff --git a/src/lib/ioloop-private.h b/src/lib/ioloop-private.h index 1a49ae9c89..d134b3f91c 100644 --- a/src/lib/ioloop-private.h +++ b/src/lib/ioloop-private.h @@ -102,7 +102,7 @@ struct ioloop_context { ARRAY(struct ioloop_context_callback) callbacks; }; -int io_loop_get_wait_time(struct ioloop *ioloop, struct timeval *tv_r); +int io_loop_run_get_wait_time(struct ioloop *ioloop, struct timeval *tv_r); void io_loop_handle_timeouts(struct ioloop *ioloop); void io_loop_call_io(struct io *io); diff --git a/src/lib/ioloop-select.c b/src/lib/ioloop-select.c index 4c8fca57a9..d5deb160ac 100644 --- a/src/lib/ioloop-select.c +++ b/src/lib/ioloop-select.c @@ -111,7 +111,7 @@ void io_loop_handler_run_internal(struct ioloop *ioloop) int ret; /* get the time left for next timeout task */ - io_loop_get_wait_time(ioloop, &tv); + io_loop_run_get_wait_time(ioloop, &tv); memcpy(&ctx->tmp_read_fds, &ctx->read_fds, sizeof(fd_set)); memcpy(&ctx->tmp_write_fds, &ctx->write_fds, sizeof(fd_set)); diff --git a/src/lib/ioloop.c b/src/lib/ioloop.c index d4dd9c011b..af708ec195 100644 --- a/src/lib/ioloop.c +++ b/src/lib/ioloop.c @@ -470,7 +470,7 @@ static int timeout_get_wait_time(struct timeout *timeout, struct timeval *tv_r, return ret; } -int io_loop_get_wait_time(struct ioloop *ioloop, struct timeval *tv_r) +static int io_loop_get_wait_time(struct ioloop *ioloop, struct timeval *tv_r) { struct timeval tv_now; struct priorityq_item *item; @@ -512,6 +512,11 @@ int io_loop_get_wait_time(struct ioloop *ioloop, struct timeval *tv_r) return msecs; } +int io_loop_run_get_wait_time(struct ioloop *ioloop, struct timeval *tv_r) +{ + return io_loop_get_wait_time(ioloop, tv_r); +} + static int timeout_cmp(const void *p1, const void *p2) { const struct timeout *to1 = p1, *to2 = p2;