X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcommon%2Fcompat%2Fpoll.cpp;h=52ff0467681e45c416c028715c379b3397084ee9;hb=HEAD;hp=910b0f62aee469dfc1691e3b7eb212c01d1fdeb7;hpb=ce7fc42f24c2c9a62a5eeb77f248d27a5cb4de4b;p=lttng-tools.git diff --git a/src/common/compat/poll.cpp b/src/common/compat/poll.cpp index 910b0f62a..52ff04676 100644 --- a/src/common/compat/poll.cpp +++ b/src/common/compat/poll.cpp @@ -7,22 +7,22 @@ */ #define _LGPL_SOURCE -#include -#include +#include "poll.hpp" -#include -#include -#include -#include +#include +#include +#include +#include -#include "poll.h" +#include +#include #ifdef HAVE_EPOLL #include #include -#include #include +#include #include /* @@ -42,22 +42,20 @@ static unsigned int poll_max_size; * * Return 0 on success or else -1 with the current events pointer untouched. */ -static int resize_poll_event(struct lttng_poll_event *events, - uint32_t new_size) +static int resize_poll_event(struct lttng_poll_event *events, uint32_t new_size) { struct epoll_event *ptr; LTTNG_ASSERT(events); ptr = (epoll_event *) realloc(events->events, new_size * sizeof(*ptr)); - if (ptr == NULL) { + if (ptr == nullptr) { PERROR("realloc epoll add"); goto error; } if (new_size > events->alloc_size) { /* Zero newly allocated memory */ - memset(ptr + events->alloc_size, 0, - (new_size - events->alloc_size) * sizeof(*ptr)); + memset(ptr + events->alloc_size, 0, (new_size - events->alloc_size) * sizeof(*ptr)); } events->events = ptr; events->alloc_size = new_size; @@ -71,11 +69,11 @@ error: /* * Create epoll set and allocate returned events structure. */ -int compat_epoll_create(struct lttng_poll_event *events, int size, int flags) +int compat_epoll_create(struct lttng_poll_event *events, int count, int flags) { int ret; - if (events == NULL || size <= 0) { + if (events == nullptr || count <= 0) { goto error; } @@ -86,11 +84,11 @@ int compat_epoll_create(struct lttng_poll_event *events, int size, int flags) } /* Don't bust the limit here */ - if (size > poll_max_size) { - size = poll_max_size; + if (count > poll_max_size) { + count = poll_max_size; } - ret = compat_glibc_epoll_create(size, flags); + ret = compat_glibc_epoll_create(count, flags); if (ret < 0) { /* At this point, every error is fatal */ PERROR("epoll_create1"); @@ -100,13 +98,13 @@ int compat_epoll_create(struct lttng_poll_event *events, int size, int flags) events->epfd = ret; /* This *must* be freed by using lttng_poll_free() */ - events->events = (epoll_event *) zmalloc(size * sizeof(struct epoll_event)); - if (events->events == NULL) { + events->events = calloc(count); + if (events->events == nullptr) { PERROR("zmalloc epoll set"); goto error_close; } - events->alloc_size = events->init_size = size; + events->alloc_size = events->init_size = count; events->nb_fd = 0; return 0; @@ -128,7 +126,7 @@ int compat_epoll_add(struct lttng_poll_event *events, int fd, uint32_t req_event int ret; struct epoll_event ev; - if (events == NULL || events->events == NULL || fd < 0) { + if (events == nullptr || events->events == nullptr || fd < 0) { ERR("Bad compat epoll add arguments"); goto error; } @@ -174,11 +172,11 @@ int compat_epoll_del(struct lttng_poll_event *events, int fd) { int ret; - if (events == NULL || fd < 0 || events->nb_fd == 0) { + if (events == nullptr || fd < 0 || events->nb_fd == 0) { goto error; } - ret = epoll_ctl(events->epfd, EPOLL_CTL_DEL, fd, NULL); + ret = epoll_ctl(events->epfd, EPOLL_CTL_DEL, fd, nullptr); if (ret < 0) { switch (errno) { case ENOENT: @@ -209,7 +207,7 @@ int compat_epoll_mod(struct lttng_poll_event *events, int fd, uint32_t req_event int ret; struct epoll_event ev; - if (events == NULL || fd < 0 || events->nb_fd == 0) { + if (events == nullptr || fd < 0 || events->nb_fd == 0) { goto error; } @@ -245,13 +243,12 @@ error: /* * Wait on epoll set. This is a blocking call of timeout value. */ -int compat_epoll_wait(struct lttng_poll_event *events, int timeout, - bool interruptible) +int compat_epoll_wait(struct lttng_poll_event *events, int timeout, bool interruptible) { int ret; uint32_t new_size; - if (events == NULL || events->events == NULL) { + if (events == nullptr || events->events == nullptr) { ERR("Wrong arguments in compat_epoll_wait"); goto error; } @@ -299,7 +296,7 @@ error: /* * Setup poll set maximum size. */ -int compat_epoll_set_max_size(void) +int compat_epoll_set_max_size() { int ret, fd, retval = 0; ssize_t size_ret; @@ -362,8 +359,7 @@ static unsigned int poll_max_size; * * Return 0 on success or else -1 with the current events pointer untouched. */ -static int resize_poll_event(struct compat_poll_event_array *array, - uint32_t new_size) +static int resize_poll_event(struct compat_poll_event_array *array, uint32_t new_size) { struct pollfd *ptr; @@ -381,8 +377,7 @@ static int resize_poll_event(struct compat_poll_event_array *array, } if (new_size > array->alloc_size) { /* Zero newly allocated memory */ - memset(ptr + array->alloc_size, 0, - (new_size - array->alloc_size) * sizeof(*ptr)); + memset(ptr + array->alloc_size, 0, (new_size - array->alloc_size) * sizeof(*ptr)); } array->events = ptr; array->alloc_size = new_size; @@ -413,8 +408,7 @@ static int update_current_events(struct lttng_poll_event *events) goto error; } } - memcpy(wait->events, current->events, - current->nb_fd * sizeof(*current->events)); + memcpy(wait->events, current->events, current->nb_fd * sizeof(*current->events)); /* Update is done. */ events->need_update = 0; @@ -455,17 +449,17 @@ int compat_poll_create(struct lttng_poll_event *events, int size) wait = &events->wait; /* This *must* be freed by using lttng_poll_free() */ - wait->events = (struct pollfd *) zmalloc(size * sizeof(struct pollfd)); + wait->events = calloc(size); if (wait->events == NULL) { - PERROR("zmalloc struct pollfd"); + PERROR("Failed to allocate wait events array during poll initialization"); goto error; } wait->alloc_size = wait->init_size = size; - current->events = (struct pollfd *) zmalloc(size * sizeof(struct pollfd)); + current->events = calloc(size); if (current->events == NULL) { - PERROR("zmalloc struct current pollfd"); + PERROR("Failed to allocate current events array during poll initialization"); goto error; } @@ -480,8 +474,7 @@ error: /* * Add fd to pollfd data structure with requested events. */ -int compat_poll_add(struct lttng_poll_event *events, int fd, - uint32_t req_events) +int compat_poll_add(struct lttng_poll_event *events, int fd, uint32_t req_events) { int new_size, ret, i; struct compat_poll_event_array *current; @@ -526,14 +519,13 @@ error: /* * Modify an fd's events.. */ -int compat_poll_mod(struct lttng_poll_event *events, int fd, - uint32_t req_events) +int compat_poll_mod(struct lttng_poll_event *events, int fd, uint32_t req_events) { int i; struct compat_poll_event_array *current; - if (events == NULL || events->current.nb_fd == 0 || - events->current.events == NULL || fd < 0) { + if (events == NULL || events->current.nb_fd == 0 || events->current.events == NULL || + fd < 0) { ERR("Bad compat poll mod arguments"); goto error; } @@ -568,8 +560,8 @@ int compat_poll_del(struct lttng_poll_event *events, int fd) uint32_t new_size; struct compat_poll_event_array *current; - if (events == NULL || events->current.nb_fd == 0 || - events->current.events == NULL || fd < 0) { + if (events == NULL || events->current.nb_fd == 0 || events->current.events == NULL || + fd < 0) { goto error; } @@ -596,8 +588,8 @@ int compat_poll_del(struct lttng_poll_event *events, int fd) /* Resize array if needed. */ new_size = 1U << utils_get_count_order_u32(current->nb_fd); - if (new_size != current->alloc_size && new_size >= current->init_size - && current->nb_fd != 0) { + if (new_size != current->alloc_size && new_size >= current->init_size && + current->nb_fd != 0) { ret = resize_poll_event(current, new_size); if (ret < 0) { goto error; @@ -616,8 +608,7 @@ error: /* * Wait on poll() with timeout. Blocking call. */ -int compat_poll_wait(struct lttng_poll_event *events, int timeout, - bool interruptible) +int compat_poll_wait(struct lttng_poll_event *events, int timeout, bool interruptible) { int ret, active_fd_count; size_t pos = 0, consecutive_entries = 0, non_idle_pos; @@ -675,7 +666,8 @@ int compat_poll_wait(struct lttng_poll_event *events, int timeout, non_idle_pos = pos; /* Look for next non-idle entry. */ - while (events->wait.events[++non_idle_pos].revents == 0); + while (events->wait.events[++non_idle_pos].revents == 0) + ; /* Swap idle and non-idle entries. */ idle_entry = *current;