Implement poll mask modification support in poll wrappers
[lttng-tools.git] / src / common / compat / compat-poll.c
index 7d4d0e1334ef1dc2abba28f9e694d2ce8052d1ea..2b459e42f9fed14d565d371963e233c50c59e168 100644 (file)
@@ -20,6 +20,7 @@
 #include <stdlib.h>
 #include <sys/resource.h>
 #include <sys/time.h>
+#include <stdbool.h>
 
 #include <common/defaults.h>
 #include <common/error.h>
@@ -196,6 +197,42 @@ error:
        return -1;
 }
 
+/*
+ * Modify an fd's events..
+ */
+int compat_poll_mod(struct lttng_poll_event *events, int fd,
+               uint32_t req_events)
+{
+       int ret, i;
+       bool fd_found = false;
+       struct compat_poll_event_array *current;
+
+       if (events == NULL || events->current.events == NULL || fd < 0) {
+               ERR("Bad compat poll mod arguments");
+               goto error;
+       }
+
+       current = &events->current;
+
+       for (i = 0; i < current->nb_fd; i++) {
+               if (current->events[i].fd == fd) {
+                       fd_found = true;
+                       current->events[i].events = req_events;
+                       events->need_update = 1;
+                       break;
+               }
+       }
+
+       if (!fd_found) {
+               goto error;
+       }
+
+       return 0;
+
+error:
+       return -1;
+}
+
 /*
  * Remove a fd from the pollfd structure.
  */
This page took 0.024058 seconds and 4 git commands to generate.