Clarify limitations of the --syscall flag with enable-event command
[lttng-tools.git] / src / common / compat / poll.h
index 9e889767f8321a05ea23f97c211086cf0c6e3836..b019b42c09ff12f81dfc92a12c6872e318f678ea 100644 (file)
@@ -158,6 +158,17 @@ static inline void lttng_poll_reset(struct lttng_poll_event *events)
        }
 }
 
+/*
+ * Initialize an already allocated poll event data structure. For epoll(), the
+ * epfd is set to -1 to indicate that it's not usable.
+ */
+static inline void lttng_poll_init(struct lttng_poll_event *events)
+{
+       memset(events, 0, sizeof(struct lttng_poll_event));
+       /* Set fd to -1 so if clean before created, we don't close 0. */
+       events->epfd = -1;
+}
+
 /*
  * Clean the events structure of a lttng_poll_event. It's the caller
  * responsability to free the lttng_poll_event memory.
@@ -166,13 +177,18 @@ static inline void lttng_poll_clean(struct lttng_poll_event *events)
 {
        int ret;
 
-       if (events) {
+       if (!events) {
+               return;
+       }
+
+       if (events->epfd >= 0) {
                ret = close(events->epfd);
                if (ret) {
                        perror("close");
                }
-               __lttng_poll_free((void *) events->events);
        }
+
+       __lttng_poll_free((void *) events->events);
 }
 
 #else  /* HAVE_EPOLL */
@@ -312,6 +328,14 @@ extern void compat_poll_set_max_size(void);
 static inline void lttng_poll_reset(struct lttng_poll_event *events)
 {}
 
+/*
+ * Initialize an already allocated poll event data structure.
+ */
+static inline void lttng_poll_init(struct lttng_poll_event *events)
+{
+       memset(events, 0, sizeof(struct lttng_poll_event));
+}
+
 /*
  * Clean the events structure of a lttng_poll_event. It's the caller
  * responsability to free the lttng_poll_event memory.
This page took 0.023622 seconds and 4 git commands to generate.