X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fcommon%2Fcompat%2Fcompat-epoll.c;h=008dba7028dff9d0756914d50c4a1baf7effdbe7;hb=e71aad1fa4b06a5f91ddceace42366f3d79bd77e;hp=dc1a3b92689904ff4cbc8db49e3d5a3a353b0dcb;hpb=db7586006bc1a2b9057a2c108bf1e7d20fd6903f;p=lttng-tools.git diff --git a/src/common/compat/compat-epoll.c b/src/common/compat/compat-epoll.c index dc1a3b926..008dba702 100644 --- a/src/common/compat/compat-epoll.c +++ b/src/common/compat/compat-epoll.c @@ -15,6 +15,7 @@ * Place - Suite 330, Boston, MA 02111-1307, USA. */ +#define _GNU_SOURCE #include #include #include @@ -49,7 +50,7 @@ int compat_epoll_create(struct lttng_poll_event *events, int size, int flags) ret = epoll_create1(flags); if (ret < 0) { /* At this point, every error is fatal */ - perror("epoll_create1"); + PERROR("epoll_create1"); goto error; } @@ -58,7 +59,7 @@ int compat_epoll_create(struct lttng_poll_event *events, int size, int flags) /* This *must* be freed by using lttng_poll_free() */ events->events = zmalloc(size * sizeof(struct epoll_event)); if (events->events == NULL) { - perror("zmalloc epoll set"); + PERROR("zmalloc epoll set"); goto error_close; } @@ -68,7 +69,10 @@ int compat_epoll_create(struct lttng_poll_event *events, int size, int flags) return 0; error_close: - close(events->epfd); + ret = close(events->epfd); + if (ret) { + PERROR("close"); + } error: return -1; } @@ -93,13 +97,15 @@ int compat_epoll_add(struct lttng_poll_event *events, int fd, uint32_t req_event if (ret < 0) { switch (errno) { case EEXIST: + /* If exist, it's OK. */ + goto end; case ENOSPC: case EPERM: - /* Print perror and goto end not failing. Show must go on. */ - perror("epoll_ctl ADD"); + /* Print PERROR and goto end not failing. Show must go on. */ + PERROR("epoll_ctl ADD"); goto end; default: - perror("epoll_ctl ADD fatal"); + PERROR("epoll_ctl ADD fatal"); goto error; } } @@ -110,7 +116,7 @@ int compat_epoll_add(struct lttng_poll_event *events, int fd, uint32_t req_event new_size = 2 * events->events_size; ptr = realloc(events->events, new_size * sizeof(struct epoll_event)); if (ptr == NULL) { - perror("realloc epoll add"); + PERROR("realloc epoll add"); goto error; } events->events = ptr; @@ -140,14 +146,14 @@ int compat_epoll_del(struct lttng_poll_event *events, int fd) switch (errno) { case ENOENT: case EPERM: - /* Print perror and goto end not failing. Show must go on. */ - perror("epoll_ctl DEL"); + /* Print PERROR and goto end not failing. Show must go on. */ + PERROR("epoll_ctl DEL"); goto end; default: - perror("epoll_ctl DEL fatal"); + PERROR("epoll_ctl DEL fatal"); goto error; } - perror("epoll_ctl del"); + PERROR("epoll_ctl del"); goto error; } @@ -178,7 +184,7 @@ int compat_epoll_wait(struct lttng_poll_event *events, int timeout) } while (ret == -1 && errno == EINTR); if (ret < 0) { /* At this point, every error is fatal */ - perror("epoll_wait"); + PERROR("epoll_wait"); goto error; } @@ -205,7 +211,7 @@ void compat_epoll_set_max_size(void) ret = read(fd, buf, sizeof(buf)); if (ret < 0) { - perror("read set max size"); + PERROR("read set max size"); goto error; } @@ -218,5 +224,8 @@ void compat_epoll_set_max_size(void) DBG("epoll set max size is %d", poll_max_size); error: - close(fd); + ret = close(fd); + if (ret) { + PERROR("close"); + } }