X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Fcompat%2Fcompat-epoll.c;h=794041726ad51226e331c511526c4ff95de128d5;hp=6a781c7ae04034f321f974c244df6e43e01e58b3;hb=9f32e9bf43a6438c55f35d3c5ed1c378d0c715c4;hpb=3be453c9ec6469235f0dc6cdaec9d55f0a6ee517 diff --git a/src/common/compat/compat-epoll.c b/src/common/compat/compat-epoll.c index 6a781c7ae..794041726 100644 --- a/src/common/compat/compat-epoll.c +++ b/src/common/compat/compat-epoll.c @@ -23,6 +23,7 @@ #include #include #include +#include #include #include @@ -241,7 +242,8 @@ error: /* * Wait on epoll set. This is a blocking call of timeout value. */ -int compat_epoll_wait(struct lttng_poll_event *events, int timeout) +int compat_epoll_wait(struct lttng_poll_event *events, int timeout, + bool interruptible) { int ret; uint32_t new_size; @@ -273,10 +275,11 @@ int compat_epoll_wait(struct lttng_poll_event *events, int timeout) do { ret = epoll_wait(events->epfd, events->events, events->nb_fd, timeout); - } while (ret == -1 && errno == EINTR); + } while (!interruptible && ret == -1 && errno == EINTR); if (ret < 0) { - /* At this point, every error is fatal */ - PERROR("epoll_wait"); + if (errno != EINTR) { + PERROR("epoll_wait"); + } goto error; }