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:
parent
1ad3d93eb8
commit
d197c8ffa3
1 changed files with 7 additions and 1 deletions
8
uloop.c
8
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)
|
||||
|
|
Loading…
Reference in a new issue