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 <eyal.birger@gmail.com>

-----
- 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
This commit is contained in:
Eyal Birger 2016-06-20 08:36:47 +03:00 committed by Felix Fietkau
parent 1ad3d93eb8
commit d197c8ffa3

View file

@ -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)