X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Fcompat%2Fpoll.hpp;h=e6de51474bfce238d96f50a9c993bf7a1c79784d;hp=5b6c2a00b0020b0b9396312c013b49e4d8ad9e5e;hb=HEAD;hpb=5f53c4bbc0836a697a5cde7d81de00ad68001b57 diff --git a/src/common/compat/poll.hpp b/src/common/compat/poll.hpp index 5b6c2a00b..da3391106 100644 --- a/src/common/compat/poll.hpp +++ b/src/common/compat/poll.hpp @@ -8,11 +8,11 @@ #ifndef _LTT_POLL_H #define _LTT_POLL_H +#include + #include #include -#include - /* * Used by lttng_poll_clean to free the events structure in a lttng_poll_event. */ @@ -25,10 +25,10 @@ static inline void __lttng_poll_free(void *events) * epoll(7) implementation. */ #ifdef HAVE_EPOLL -#include -#include + #include -#include +#include +#include /* See man epoll(7) for this define path */ #define COMPAT_EPOLL_PROC_PATH "/proc/sys/fs/epoll/max_user_watches" @@ -47,7 +47,7 @@ enum { LPOLLHUP = EPOLLHUP, LPOLLNVAL = EPOLLHUP, LPOLLRDHUP = EPOLLRDHUP, - /* Close on exec feature of epoll */ +/* Close on exec feature of epoll */ #if defined(HAVE_EPOLL_CREATE1) && defined(EPOLL_CLOEXEC) LTTNG_CLOEXEC = EPOLL_CLOEXEC, #else @@ -63,15 +63,15 @@ enum { struct compat_epoll_event { int epfd; - uint32_t nb_fd; /* Current number of fd in events */ + uint32_t nb_fd; /* Current number of fd in events */ uint32_t alloc_size; /* Size of events array */ - uint32_t init_size; /* Initial size of events array */ + uint32_t init_size; /* Initial size of events array */ struct epoll_event *events; }; #define lttng_poll_event compat_epoll_event -static inline int __lttng_epoll_get_prev_fd(struct lttng_poll_event *events, - int index, uint32_t nb_fd) +static inline int +__lttng_epoll_get_prev_fd(struct lttng_poll_event *events, int index, uint32_t nb_fd) { LTTNG_ASSERT(events); LTTNG_ASSERT(index != nb_fd); @@ -87,22 +87,18 @@ static inline int __lttng_epoll_get_prev_fd(struct lttng_poll_event *events, * For the following calls, consider 'e' to be a lttng_poll_event pointer and i * being the index of the events array. */ -#define LTTNG_POLL_GETFD(e, i) LTTNG_REF(e)->events[i].data.fd -#define LTTNG_POLL_GETEV(e, i) LTTNG_REF(e)->events[i].events -#define LTTNG_POLL_GETNB(e) LTTNG_REF(e)->nb_fd -#define LTTNG_POLL_GETSZ(e) LTTNG_REF(e)->events_size -#define LTTNG_POLL_GET_PREV_FD(e, i, nb_fd) \ - __lttng_epoll_get_prev_fd(LTTNG_REF(e), i, nb_fd) +#define LTTNG_POLL_GETFD(e, i) LTTNG_REF(e)->events[i].data.fd +#define LTTNG_POLL_GETEV(e, i) LTTNG_REF(e)->events[i].events +#define LTTNG_POLL_GETNB(e) LTTNG_REF(e)->nb_fd +#define LTTNG_POLL_GETSZ(e) LTTNG_REF(e)->events_size +#define LTTNG_POLL_GET_PREV_FD(e, i, nb_fd) __lttng_epoll_get_prev_fd(LTTNG_REF(e), i, nb_fd) /* Create the epoll set. */ -extern int compat_epoll_create(struct lttng_poll_event *events, - int size, int flags); -#define lttng_poll_create(events, size, flags) \ - compat_epoll_create(events, size, flags) +extern int compat_epoll_create(struct lttng_poll_event *events, int size, int flags); +#define lttng_poll_create(events, size, flags) compat_epoll_create(events, size, flags) #if defined(HAVE_EPOLL_CREATE1) && defined(EPOLL_CLOEXEC) -static inline int compat_glibc_epoll_create(int size __attribute__((unused)), - int flags) +static inline int compat_glibc_epoll_create(int size __attribute__((unused)), int flags) { return epoll_create1(flags); } @@ -125,42 +121,33 @@ static inline int compat_glibc_epoll_create(int size, int flags) * Wait on epoll set with the number of fd registered to the lttng_poll_event * data structure (events). */ -extern int compat_epoll_wait(struct lttng_poll_event *events, int timeout, - bool interruptible); -#define lttng_poll_wait(events, timeout) \ - compat_epoll_wait(events, timeout, false) -#define lttng_poll_wait_interruptible(events, timeout) \ - compat_epoll_wait(events, timeout, true) +extern int compat_epoll_wait(struct lttng_poll_event *events, int timeout, bool interruptible); +#define lttng_poll_wait(events, timeout) compat_epoll_wait(events, timeout, false) +#define lttng_poll_wait_interruptible(events, timeout) compat_epoll_wait(events, timeout, true) /* * Add a fd to the epoll set and resize the epoll_event structure if needed. */ -extern int compat_epoll_add(struct lttng_poll_event *events, - int fd, uint32_t req_events); -#define lttng_poll_add(events, fd, req_events) \ - compat_epoll_add(events, fd, req_events) +extern int compat_epoll_add(struct lttng_poll_event *events, int fd, uint32_t req_events); +#define lttng_poll_add(events, fd, req_events) compat_epoll_add(events, fd, req_events) /* * Remove a fd from the epoll set. */ extern int compat_epoll_del(struct lttng_poll_event *events, int fd); -#define lttng_poll_del(events, fd) \ - compat_epoll_del(events, fd) +#define lttng_poll_del(events, fd) compat_epoll_del(events, fd) /* * Modify an fd's events in the epoll set. */ -extern int compat_epoll_mod(struct lttng_poll_event *events, - int fd, uint32_t req_events); -#define lttng_poll_mod(events, fd, req_events) \ - compat_epoll_mod(events, fd, req_events) +extern int compat_epoll_mod(struct lttng_poll_event *events, int fd, uint32_t req_events); +#define lttng_poll_mod(events, fd, req_events) compat_epoll_mod(events, fd, req_events) /* * Set up the poll set limits variable poll_max_size */ -extern int compat_epoll_set_max_size(void); -#define lttng_poll_set_max_size() \ - compat_epoll_set_max_size() +extern int compat_epoll_set_max_size(); +#define lttng_poll_set_max_size() compat_epoll_set_max_size() /* * This function memset with zero the structure since it can be reused at each @@ -170,8 +157,7 @@ extern int compat_epoll_set_max_size(void); static inline void lttng_poll_reset(struct lttng_poll_event *events) { if (events && events->events) { - memset(events->events, 0, - events->nb_fd * sizeof(struct epoll_event)); + memset(events->events, 0, events->nb_fd * sizeof(struct epoll_event)); } } @@ -208,7 +194,7 @@ static inline void lttng_poll_clean(struct lttng_poll_event *events) __lttng_poll_free((void *) events->events); } -#else /* HAVE_EPOLL */ +#else /* HAVE_EPOLL */ /* * Fallback on poll(2) API */ @@ -239,7 +225,7 @@ enum { }; struct compat_poll_event_array { - uint32_t nb_fd; /* Current number of fd in events */ + uint32_t nb_fd; /* Current number of fd in events */ uint32_t alloc_size; /* Size of events array */ /* Initial size of the pollset. We never shrink below that. */ uint32_t init_size; @@ -261,10 +247,10 @@ struct compat_poll_event { /* Indicate if wait.events need to be updated from current. */ int need_update:1; }; -#define lttng_poll_event compat_poll_event +#define lttng_poll_event compat_poll_event -static inline int __lttng_poll_get_prev_fd(struct lttng_poll_event *events, - int index, uint32_t nb_fd) +static inline int +__lttng_poll_get_prev_fd(struct lttng_poll_event *events, int index, uint32_t nb_fd) { LTTNG_ASSERT(events); LTTNG_ASSERT(index != nb_fd); @@ -282,38 +268,31 @@ static inline int __lttng_poll_get_prev_fd(struct lttng_poll_event *events, * LTTNG_POLL_GETNB is always used after lttng_poll_wait, thus we can use the * current list for test compatibility purposes. */ -#define LTTNG_POLL_GETFD(e, i) LTTNG_REF(e)->wait.events[i].fd -#define LTTNG_POLL_GETEV(e, i) LTTNG_REF(e)->wait.events[i].revents -#define LTTNG_POLL_GETNB(e) LTTNG_REF(e)->current.nb_fd -#define LTTNG_POLL_GETSZ(e) LTTNG_REF(e)->wait.events_size -#define LTTNG_POLL_GET_PREV_FD(e, i, nb_fd) \ - __lttng_poll_get_prev_fd(LTTNG_REF(e), i, nb_fd) +#define LTTNG_POLL_GETFD(e, i) LTTNG_REF(e)->wait.events[i].fd +#define LTTNG_POLL_GETEV(e, i) LTTNG_REF(e)->wait.events[i].revents +#define LTTNG_POLL_GETNB(e) LTTNG_REF(e)->current.nb_fd +#define LTTNG_POLL_GETSZ(e) LTTNG_REF(e)->wait.events_size +#define LTTNG_POLL_GET_PREV_FD(e, i, nb_fd) __lttng_poll_get_prev_fd(LTTNG_REF(e), i, nb_fd) /* * Create a pollfd structure of size 'size'. */ extern int compat_poll_create(struct lttng_poll_event *events, int size); -#define lttng_poll_create(events, size, flags) \ - compat_poll_create(events, size) +#define lttng_poll_create(events, size, flags) compat_poll_create(events, size) /* * Wait on poll(2) event with nb_fd registered to the lttng_poll_event data * structure. */ -extern int compat_poll_wait(struct lttng_poll_event *events, int timeout, - bool interruptible); -#define lttng_poll_wait(events, timeout) \ - compat_poll_wait(events, timeout, false) -#define lttng_poll_wait_interruptible(events, timeout) \ - compat_poll_wait(events, timeout, true) +extern int compat_poll_wait(struct lttng_poll_event *events, int timeout, bool interruptible); +#define lttng_poll_wait(events, timeout) compat_poll_wait(events, timeout, false) +#define lttng_poll_wait_interruptible(events, timeout) compat_poll_wait(events, timeout, true) /* * Add the fd to the pollfd structure. Resize if needed. */ -extern int compat_poll_add(struct lttng_poll_event *events, - int fd, uint32_t req_events); -#define lttng_poll_add(events, fd, req_events) \ - compat_poll_add(events, fd, req_events) +extern int compat_poll_add(struct lttng_poll_event *events, int fd, uint32_t req_events); +#define lttng_poll_add(events, fd, req_events) compat_poll_add(events, fd, req_events) /* * Remove the fd from the pollfd. Memory allocation is done to recreate a new @@ -321,30 +300,26 @@ extern int compat_poll_add(struct lttng_poll_event *events, * one is freed(). */ extern int compat_poll_del(struct lttng_poll_event *events, int fd); -#define lttng_poll_del(events, fd) \ - compat_poll_del(events, fd) +#define lttng_poll_del(events, fd) compat_poll_del(events, fd) /* * Modify an fd's events in the poll set. */ -extern int compat_poll_mod(struct lttng_poll_event *events, - int fd, uint32_t req_events); -#define lttng_poll_mod(events, fd, req_events) \ - compat_poll_mod(events, fd, req_events) +extern int compat_poll_mod(struct lttng_poll_event *events, int fd, uint32_t req_events); +#define lttng_poll_mod(events, fd, req_events) compat_poll_mod(events, fd, req_events) /* * Set up the poll set limits variable poll_max_size */ extern int compat_poll_set_max_size(void); -#define lttng_poll_set_max_size() \ - compat_poll_set_max_size() +#define lttng_poll_set_max_size() compat_poll_set_max_size() /* * No need to reset a pollfd structure for poll(2) */ -static inline void lttng_poll_reset( - struct lttng_poll_event *events __attribute__((unused))) -{} +static inline void lttng_poll_reset(struct lttng_poll_event *events __attribute__((unused))) +{ +} /* * Initialize an already allocated poll event data structure.