From cc0acbd149005db7b944856be2aff499f38c0d64 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=A9mie=20Galarneau?= Date: Wed, 2 Oct 2019 17:25:00 -0400 Subject: [PATCH] Fix: liblttng-ctl: poll compatibility symbols inadvertently exported MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit abidiff reports that the following poll/epoll compatibility layer symbols were inadventently exported by liblttng-ctl: 'function int compat_epoll_add(compat_epoll_event*, int, uint32_t)' {compat_epoll_add} 'function int compat_epoll_create(compat_epoll_event*, int, int)' {compat_epoll_create} 'function int compat_epoll_del(compat_epoll_event*, int)' {compat_epoll_del} 'function int compat_epoll_mod(compat_epoll_event*, int, uint32_t)' {compat_epoll_mod} 'function int compat_epoll_set_max_size()' {compat_epoll_set_max_size} 'function int compat_epoll_wait(compat_epoll_event*, int, bool)' {compat_epoll_wait} Those functions and their 'poll' equivalent are marked as LTTNG_HIDDEN. The poll_max_size variable is also made static and removed from the compatibility header since it is never used apart from within the implementation files. 'unsigned int poll_max_size' {poll_max_size} Signed-off-by: Jérémie Galarneau --- src/common/compat/compat-epoll.c | 18 +++++++++++++++++- src/common/compat/compat-poll.c | 15 ++++++++++++++- src/common/compat/poll.h | 14 -------------- 3 files changed, 31 insertions(+), 16 deletions(-) diff --git a/src/common/compat/compat-epoll.c b/src/common/compat/compat-epoll.c index 794041726..92abc0a78 100644 --- a/src/common/compat/compat-epoll.c +++ b/src/common/compat/compat-epoll.c @@ -32,7 +32,17 @@ #include "poll.h" -unsigned int poll_max_size; +/* + * Maximum number of fd we can monitor. + * + * For epoll(7), /proc/sys/fs/epoll/max_user_watches (since Linux 2.6.28) will + * be used for the maximum size of the poll set. If this interface is not + * available, according to the manpage, the max_user_watches value is 1/25 (4%) + * of the available low memory divided by the registration cost in bytes which + * is 90 bytes on a 32-bit kernel and 160 bytes on a 64-bit kernel. + * + */ +static unsigned int poll_max_size; /* * Resize the epoll events structure of the new size. @@ -68,6 +78,7 @@ error: /* * Create epoll set and allocate returned events structure. */ +LTTNG_HIDDEN int compat_epoll_create(struct lttng_poll_event *events, int size, int flags) { int ret; @@ -120,6 +131,7 @@ error: /* * Add a fd to the epoll set with requesting events. */ +LTTNG_HIDDEN int compat_epoll_add(struct lttng_poll_event *events, int fd, uint32_t req_events) { int ret; @@ -167,6 +179,7 @@ error: /* * Remove a fd from the epoll set. */ +LTTNG_HIDDEN int compat_epoll_del(struct lttng_poll_event *events, int fd) { int ret; @@ -201,6 +214,7 @@ error: /* * Set an fd's events. */ +LTTNG_HIDDEN int compat_epoll_mod(struct lttng_poll_event *events, int fd, uint32_t req_events) { int ret; @@ -242,6 +256,7 @@ error: /* * Wait on epoll set. This is a blocking call of timeout value. */ +LTTNG_HIDDEN int compat_epoll_wait(struct lttng_poll_event *events, int timeout, bool interruptible) { @@ -296,6 +311,7 @@ error: /* * Setup poll set maximum size. */ +LTTNG_HIDDEN int compat_epoll_set_max_size(void) { int ret, fd, retval = 0; diff --git a/src/common/compat/compat-poll.c b/src/common/compat/compat-poll.c index 4ea23c173..79756f573 100644 --- a/src/common/compat/compat-poll.c +++ b/src/common/compat/compat-poll.c @@ -30,7 +30,14 @@ #include "poll.h" -unsigned int poll_max_size; + +/* + * Maximum number of fd we can monitor. + * + * For poll(2), the max fds must not exceed RLIMIT_NOFILE given by + * getrlimit(2). + */ +static unsigned int poll_max_size; /* * Resize the epoll events structure of the new size. @@ -103,6 +110,7 @@ error: /* * Create pollfd data structure. */ +LTTNG_HIDDEN int compat_poll_create(struct lttng_poll_event *events, int size) { struct compat_poll_event_array *current, *wait; @@ -155,6 +163,7 @@ error: /* * Add fd to pollfd data structure with requested events. */ +LTTNG_HIDDEN int compat_poll_add(struct lttng_poll_event *events, int fd, uint32_t req_events) { @@ -201,6 +210,7 @@ error: /* * Modify an fd's events.. */ +LTTNG_HIDDEN int compat_poll_mod(struct lttng_poll_event *events, int fd, uint32_t req_events) { @@ -237,6 +247,7 @@ error: /* * Remove a fd from the pollfd structure. */ +LTTNG_HIDDEN int compat_poll_del(struct lttng_poll_event *events, int fd) { int i, count = 0, ret; @@ -291,6 +302,7 @@ error: /* * Wait on poll() with timeout. Blocking call. */ +LTTNG_HIDDEN int compat_poll_wait(struct lttng_poll_event *events, int timeout, bool interruptible) { @@ -370,6 +382,7 @@ error: /* * Setup poll set maximum size. */ +LTTNG_HIDDEN int compat_poll_set_max_size(void) { int ret, retval = 0; diff --git a/src/common/compat/poll.h b/src/common/compat/poll.h index 0b3cb3243..622f5bde4 100644 --- a/src/common/compat/poll.h +++ b/src/common/compat/poll.h @@ -24,20 +24,6 @@ #include -/* - * Maximum number of fd we can monitor. - * - * For epoll(7), /proc/sys/fs/epoll/max_user_watches (since Linux 2.6.28) will - * be used for the maximum size of the poll set. If this interface is not - * available, according to the manpage, the max_user_watches value is 1/25 (4%) - * of the available low memory divided by the registration cost in bytes which - * is 90 bytes on a 32-bit kernel and 160 bytes on a 64-bit kernel. - * - * For poll(2), the max fds must not exceed RLIMIT_NOFILE given by - * getrlimit(2). - */ -extern unsigned int poll_max_size; - /* * Used by lttng_poll_clean to free the events structure in a lttng_poll_event. */ -- 2.34.1