/*
* Set up the poll set limits variable poll_max_size
*/
-extern void compat_epoll_set_max_size(void);
+extern int compat_epoll_set_max_size(void);
#define lttng_poll_set_max_size() \
compat_epoll_set_max_size()
}
}
+/*
+ * 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.
{
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 */
* execution before a poll wait is done.
*/
struct compat_poll_event_array current;
- /* Indicate if wait.events needs to be realloc. */
- int need_realloc:1;
+
/* Indicate if wait.events need to be updated from current. */
int need_update:1;
};
/*
* Set up the poll set limits variable poll_max_size
*/
-extern void compat_poll_set_max_size(void);
+extern int compat_poll_set_max_size(void);
#define lttng_poll_set_max_size() \
compat_poll_set_max_size()
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.