From 444454aa660b6bc5d82f4442f121775bc3cd6a53 Mon Sep 17 00:00:00 2001 From: Maria Matejka Date: Mon, 16 Sep 2024 23:10:51 +0200 Subject: [PATCH] fixup! Minimalist mainloop implementation --- sysdep/unix/io-loop.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/sysdep/unix/io-loop.c b/sysdep/unix/io-loop.c index afe60621..60d5c085 100644 --- a/sysdep/unix/io-loop.c +++ b/sysdep/unix/io-loop.c @@ -1629,6 +1629,21 @@ birdloop_minimalist_main(void) .events = POLLIN, }; - poll(&pfd, 1, poll_tout); +poll_retry: + int rv = poll(&pfd, 1, poll_tout); + if (rv < 0) + { + if (errno == EINTR || errno == EAGAIN) + goto poll_retry; + bug("poll in main birdloop: %m"); + } + + /* Drain wakeup fd */ + if (pfd.revents & POLLIN) + { + THREAD_TRACE(DL_WAKEUP, "Ping received"); + ASSERT_DIE(rv == 1); + wakeup_drain(main_birdloop.thread); + } } }