From 7ccfcb159313ce40bc57de2eecc3067eee493131 Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Wed, 15 Jul 2015 10:16:16 -0700 Subject: [PATCH] eal/linux: handle signal on event read The read for events in the interrupt thread may get interrupted by signals from application. Avoid generating stray log message. Signed-off-by: Stephen Hemminger --- lib/librte_eal/linuxapp/eal/eal_interrupts.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/librte_eal/linuxapp/eal/eal_interrupts.c b/lib/librte_eal/linuxapp/eal/eal_interrupts.c index b5f369ea1b..61e7c856b6 100644 --- a/lib/librte_eal/linuxapp/eal/eal_interrupts.c +++ b/lib/librte_eal/linuxapp/eal/eal_interrupts.c @@ -720,12 +720,14 @@ eal_intr_process_interrupts(struct epoll_event *events, int nfds) * for epoll_wait. */ bytes_read = read(events[n].data.fd, &buf, bytes_read); + if (bytes_read < 0) { + if (errno == EINTR || errno == EWOULDBLOCK) + continue; - if (bytes_read < 0) RTE_LOG(ERR, EAL, "Error reading from file " "descriptor %d: %s\n", events[n].data.fd, strerror(errno)); - else if (bytes_read == 0) + } else if (bytes_read == 0) RTE_LOG(ERR, EAL, "Read nothing from file " "descriptor %d\n", events[n].data.fd); -- 2.20.1