From: Eyal Birger Date: Mon, 20 Jun 2016 05:36:47 +0000 (+0300) Subject: uloop: handle waker pipe write() return value X-Git-Url: http://git.openwrt.org/?p=project%2Flibubox.git;a=commitdiff_plain;h=d197c8ffa3cc61a747f318fd0ecef1f6e39b3935 uloop: handle waker pipe write() return value Recent glibc warns if result of read() or write() is unused. Added a retry in case of EINTR, all other faults are silently discarded. Signed-off-by: Eyal Birger ----- - I was not able to reproduce the EINTR case, but it seems to be the right thing to do - Retrying on EAGAIN in this case would be weird as there is no one to read from the other end of the pipe. We could call waker_consume() directly but since the size of the message is just one byte, I think this would be dead code --- diff --git a/uloop.c b/uloop.c index 0b75d4b..1c5bcee 100644 --- a/uloop.c +++ b/uloop.c @@ -387,7 +387,13 @@ static void uloop_handle_processes(void) static void uloop_signal_wake(void) { - write(waker_pipe, "w", 1); + do { + if (write(waker_pipe, "w", 1) < 0) { + if (errno == EINTR) + continue; + } + break; + } while (1); } static void uloop_handle_sigint(int signo)