replace panic calls with log and return value. Thread function removes the noreturn attribute.
Signed-off-by: Arnon Warshavsky <ar...@qwilt.com> --- lib/librte_eal/linuxapp/eal/eal_interrupts.c | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/lib/librte_eal/linuxapp/eal/eal_interrupts.c b/lib/librte_eal/linuxapp/eal/eal_interrupts.c index 58e9328..77e6f2a 100644 --- a/lib/librte_eal/linuxapp/eal/eal_interrupts.c +++ b/lib/librte_eal/linuxapp/eal/eal_interrupts.c @@ -785,7 +785,7 @@ struct rte_intr_source { * @return * never return; */ -static __attribute__((noreturn)) void * +static void * eal_intr_thread_main(__rte_unused void *arg) { struct epoll_event ev; @@ -803,8 +803,11 @@ static __attribute__((noreturn)) void * /* create epoll fd */ int pfd = epoll_create(1); - if (pfd < 0) - rte_panic("Cannot create epoll instance\n"); + if (pfd < 0) { + RTE_LOG(CRIT, EAL, "%s(): Cannot create epoll instance\n", + __func__); + return NULL; + } pipe_event.data.fd = intr_pipe.readfd; /** @@ -813,8 +816,11 @@ static __attribute__((noreturn)) void * */ if (epoll_ctl(pfd, EPOLL_CTL_ADD, intr_pipe.readfd, &pipe_event) < 0) { - rte_panic("Error adding fd to %d epoll_ctl, %s\n", + RTE_LOG(CRIT, EAL, "%s(): Error adding fd to %d " + "epoll_ctl, %s\n", + __func__, intr_pipe.readfd, strerror(errno)); + return NULL; } numfds++; @@ -831,9 +837,12 @@ static __attribute__((noreturn)) void * * into wait list. */ if (epoll_ctl(pfd, EPOLL_CTL_ADD, - src->intr_handle.fd, &ev) < 0){ - rte_panic("Error adding fd %d epoll_ctl, %s\n", - src->intr_handle.fd, strerror(errno)); + src->intr_handle.fd, &ev) < 0) { + RTE_LOG(CRIT, EAL, "%s(): Error adding fd %d epoll_ctl, %s\n", + __func__, + src->intr_handle.fd, + strerror(errno)); + return NULL; } else numfds++; @@ -848,6 +857,8 @@ static __attribute__((noreturn)) void * */ close(pfd); } + + return NULL; } int -- 1.8.3.1