epoll/poll compat: expose interruptible API
[lttng-tools.git] / src / common / compat / compat-poll.c
index 254ce271e71c2f1b9249942e229b5a4b5b7fc82f..4ea23c17318e1439f36a94b134194d13b070e4de 100644 (file)
@@ -291,7 +291,8 @@ error:
 /*
  * Wait on poll() with timeout. Blocking call.
  */
-int compat_poll_wait(struct lttng_poll_event *events, int timeout)
+int compat_poll_wait(struct lttng_poll_event *events, int timeout,
+               bool interruptible)
 {
        int ret, active_fd_count;
        int idle_pfd_index = 0;
@@ -320,10 +321,11 @@ int compat_poll_wait(struct lttng_poll_event *events, int timeout)
 
        do {
                ret = poll(events->wait.events, events->wait.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("poll wait");
+               if (errno != EINTR) {
+                       PERROR("poll wait");
+               }
                goto error;
        }
 
This page took 0.023525 seconds and 4 git commands to generate.