eal/linux: handle signal on event read
authorStephen Hemminger <stephen@networkplumber.org>
Wed, 15 Jul 2015 17:16:16 +0000 (10:16 -0700)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Sun, 19 Jul 2015 23:56:17 +0000 (01:56 +0200)
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 <stephen@networkplumber.org>
lib/librte_eal/linuxapp/eal/eal_interrupts.c

index b5f369e..61e7c85 100644 (file)
@@ -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);