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)
|
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)
|
static void uloop_handle_sigint(int signo)
|
||||||
|
|
Loading…
Reference in a new issue