From: Timo Sirainen Date: Tue, 17 Sep 2019 16:52:14 +0000 (+0300) Subject: lib: Add io_loop_get_root() X-Git-Tag: 2.3.9~147 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=691228336c0b60614a4627449f560cdcacd406c0;p=thirdparty%2Fdovecot%2Fcore.git lib: Add io_loop_get_root() --- diff --git a/src/lib/ioloop.c b/src/lib/ioloop.c index 64fdb54a29..7482970aa9 100644 --- a/src/lib/ioloop.c +++ b/src/lib/ioloop.c @@ -947,6 +947,15 @@ void io_loop_set_current(struct ioloop *ioloop) } } +struct ioloop *io_loop_get_root(void) +{ + struct ioloop *ioloop = current_ioloop; + + while (ioloop->prev != NULL) + ioloop = ioloop->prev; + return ioloop; +} + void io_loop_add_switch_callback(io_switch_callback_t *callback) { if (!array_is_created(&io_switch_callbacks)) { diff --git a/src/lib/ioloop.h b/src/lib/ioloop.h index 9f60b2f9d6..c1f9aa4853 100644 --- a/src/lib/ioloop.h +++ b/src/lib/ioloop.h @@ -201,6 +201,8 @@ void io_loop_set_time_moved_callback(struct ioloop *ioloop, /* Change the current_ioloop. */ void io_loop_set_current(struct ioloop *ioloop); +/* Return the root ioloop. */ +struct ioloop *io_loop_get_root(void); /* Call the callback whenever ioloop is changed. */ void io_loop_add_switch_callback(io_switch_callback_t *callback); void io_loop_remove_switch_callback(io_switch_callback_t *callback);