From ef9ff354212ff4b038e1a5b6a7ed0ffe1b949663 Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Thu, 12 Jan 2012 13:04:34 -0500 Subject: [PATCH] Close stream and channel file descriptors as soon as passed to sessiond Ensure we don't bust the open FD limit with many sessions. Signed-off-by: Mathieu Desnoyers --- include/lttng/ust-abi.h | 20 +++++-- include/lttng/ust-events.h | 16 ++--- liblttng-ust-ctl/ustctl.c | 4 +- liblttng-ust/ltt-events.c | 4 +- liblttng-ust/ltt-ring-buffer-client.h | 12 ++-- .../ltt-ring-buffer-metadata-client.h | 12 ++-- liblttng-ust/lttng-ust-abi.c | 59 +++++++++++++------ liblttng-ust/lttng-ust-comm.c | 58 +++++++++++++++--- libringbuffer/frontend.h | 8 +-- libringbuffer/ring_buffer_frontend.c | 6 +- libringbuffer/shm.c | 10 ++-- libringbuffer/shm.h | 8 +-- tests/ust-basic-tracing/ust-basic-tracing.c | 4 +- tests/ust-multi-test/ust-multi-test.c | 4 +- 14 files changed, 151 insertions(+), 74 deletions(-) diff --git a/include/lttng/ust-abi.h b/include/lttng/ust-abi.h index 8b819773..6a15e0dd 100644 --- a/include/lttng/ust-abi.h +++ b/include/lttng/ust-abi.h @@ -49,10 +49,6 @@ struct lttng_ust_channel { unsigned int switch_timer_interval; /* usecs */ unsigned int read_timer_interval; /* usecs */ enum lttng_ust_output output; /* output mode */ - /* The following fields are used internally within UST. */ - int shm_fd; - int wait_fd; - uint64_t memory_map_size; }; /* @@ -158,8 +154,22 @@ struct lttng_ust_object_data { struct lttng_ust_obj; +union ust_args { + struct { + int *shm_fd; + int *wait_fd; + uint64_t *memory_map_size; + } channel; + struct { + int *shm_fd; + int *wait_fd; + uint64_t *memory_map_size; + } stream; +}; + struct lttng_ust_objd_ops { - long (*cmd)(int objd, unsigned int cmd, unsigned long arg); + long (*cmd)(int objd, unsigned int cmd, unsigned long arg, + union ust_args *args); int (*release)(int objd); }; diff --git a/include/lttng/ust-events.h b/include/lttng/ust-events.h index b74a1767..4d1cace5 100644 --- a/include/lttng/ust-events.h +++ b/include/lttng/ust-events.h @@ -304,14 +304,14 @@ struct ltt_channel_ops { size_t subbuf_size, size_t num_subbuf, unsigned int switch_timer_interval, unsigned int read_timer_interval, - int *shm_fd, int *wait_fd, - uint64_t *memory_map_size, + int **shm_fd, int **wait_fd, + uint64_t **memory_map_size, struct ltt_channel *chan_priv_init); void (*channel_destroy)(struct ltt_channel *ltt_chan); struct lttng_ust_lib_ring_buffer *(*buffer_read_open)(struct channel *chan, struct lttng_ust_shm_handle *handle, - int *shm_fd, int *wait_fd, - uint64_t *memory_map_size); + int **shm_fd, int **wait_fd, + uint64_t **memory_map_size); void (*buffer_read_close)(struct lttng_ust_lib_ring_buffer *buf, struct lttng_ust_shm_handle *handle); int (*event_reserve)(struct lttng_ust_lib_ring_buffer_ctx *ctx, @@ -392,16 +392,16 @@ struct ltt_channel *ltt_channel_create(struct ltt_session *session, size_t subbuf_size, size_t num_subbuf, unsigned int switch_timer_interval, unsigned int read_timer_interval, - int *shm_fd, int *wait_fd, - uint64_t *memory_map_size, + int **shm_fd, int **wait_fd, + uint64_t **memory_map_size, struct ltt_channel *chan_priv_init); struct ltt_channel *ltt_global_channel_create(struct ltt_session *session, int overwrite, void *buf_addr, size_t subbuf_size, size_t num_subbuf, unsigned int switch_timer_interval, unsigned int read_timer_interval, - int *shm_fd, int *wait_fd, - uint64_t *memory_map_size); + int **shm_fd, int **wait_fd, + uint64_t **memory_map_size); int ltt_event_create(struct ltt_channel *chan, struct lttng_ust_event *event_param, diff --git a/liblttng-ust-ctl/ustctl.c b/liblttng-ust-ctl/ustctl.c index 656aeac5..f7e13a1a 100644 --- a/liblttng-ust-ctl/ustctl.c +++ b/liblttng-ust-ctl/ustctl.c @@ -600,8 +600,8 @@ struct lttng_ust_lib_ring_buffer *ustctl_open_stream_read(struct lttng_ust_shm_h int cpu) { struct channel *chan = handle->shadow_chan; - int shm_fd, wait_fd; - uint64_t memory_map_size; + int *shm_fd, *wait_fd; + uint64_t *memory_map_size; struct lttng_ust_lib_ring_buffer *buf; int ret; diff --git a/liblttng-ust/ltt-events.c b/liblttng-ust/ltt-events.c index 94e06780..ee88b431 100644 --- a/liblttng-ust/ltt-events.c +++ b/liblttng-ust/ltt-events.c @@ -401,8 +401,8 @@ struct ltt_channel *ltt_channel_create(struct ltt_session *session, size_t subbuf_size, size_t num_subbuf, unsigned int switch_timer_interval, unsigned int read_timer_interval, - int *shm_fd, int *wait_fd, - uint64_t *memory_map_size, + int **shm_fd, int **wait_fd, + uint64_t **memory_map_size, struct ltt_channel *chan_priv_init) { struct ltt_channel *chan = NULL; diff --git a/liblttng-ust/ltt-ring-buffer-client.h b/liblttng-ust/ltt-ring-buffer-client.h index 6f714da5..a2ace400 100644 --- a/liblttng-ust/ltt-ring-buffer-client.h +++ b/liblttng-ust/ltt-ring-buffer-client.h @@ -385,8 +385,8 @@ struct ltt_channel *_channel_create(const char *name, size_t subbuf_size, size_t num_subbuf, unsigned int switch_timer_interval, unsigned int read_timer_interval, - int *shm_fd, int *wait_fd, - uint64_t *memory_map_size, + int **shm_fd, int **wait_fd, + uint64_t **memory_map_size, struct ltt_channel *chan_priv_init) { void *priv; @@ -416,8 +416,8 @@ void ltt_channel_destroy(struct ltt_channel *ltt_chan) static struct lttng_ust_lib_ring_buffer *ltt_buffer_read_open(struct channel *chan, struct lttng_ust_shm_handle *handle, - int *shm_fd, int *wait_fd, - uint64_t *memory_map_size) + int **shm_fd, int **wait_fd, + uint64_t **memory_map_size) { struct lttng_ust_lib_ring_buffer *buf; int cpu; @@ -521,8 +521,8 @@ int ltt_flush_buffer(struct channel *chan, struct lttng_ust_shm_handle *handle) int cpu; for_each_channel_cpu(cpu, chan) { - int shm_fd, wait_fd; - uint64_t memory_map_size; + int *shm_fd, *wait_fd; + uint64_t *memory_map_size; buf = channel_get_ring_buffer(&client_config, chan, cpu, handle, &shm_fd, &wait_fd, diff --git a/liblttng-ust/ltt-ring-buffer-metadata-client.h b/liblttng-ust/ltt-ring-buffer-metadata-client.h index a9c2f641..7e79b116 100644 --- a/liblttng-ust/ltt-ring-buffer-metadata-client.h +++ b/liblttng-ust/ltt-ring-buffer-metadata-client.h @@ -167,8 +167,8 @@ struct ltt_channel *_channel_create(const char *name, size_t subbuf_size, size_t num_subbuf, unsigned int switch_timer_interval, unsigned int read_timer_interval, - int *shm_fd, int *wait_fd, - uint64_t *memory_map_size, + int **shm_fd, int **wait_fd, + uint64_t **memory_map_size, struct ltt_channel *chan_priv_init) { void *priv; @@ -198,8 +198,8 @@ void ltt_channel_destroy(struct ltt_channel *ltt_chan) static struct lttng_ust_lib_ring_buffer *ltt_buffer_read_open(struct channel *chan, struct lttng_ust_shm_handle *handle, - int *shm_fd, int *wait_fd, - uint64_t *memory_map_size) + int **shm_fd, int **wait_fd, + uint64_t **memory_map_size) { struct lttng_ust_lib_ring_buffer *buf; @@ -283,8 +283,8 @@ static int ltt_flush_buffer(struct channel *chan, struct lttng_ust_shm_handle *handle) { struct lttng_ust_lib_ring_buffer *buf; - int shm_fd, wait_fd; - uint64_t memory_map_size; + int *shm_fd, *wait_fd; + uint64_t *memory_map_size; buf = channel_get_ring_buffer(&client_config, chan, 0, handle, &shm_fd, &wait_fd, diff --git a/liblttng-ust/lttng-ust-abi.c b/liblttng-ust/lttng-ust-abi.c index 716a2cc9..b3db6fd7 100644 --- a/liblttng-ust/lttng-ust-abi.c +++ b/liblttng-ust/lttng-ust-abi.c @@ -281,6 +281,7 @@ long lttng_abi_add_context(int objd, * @objd: the object descriptor * @cmd: the command * @arg: command arg + * @uargs: UST arguments (internal) * * This descriptor implements lttng commands: * LTTNG_UST_SESSION @@ -295,7 +296,8 @@ long lttng_abi_add_context(int objd, * The returned session will be deleted when its file descriptor is closed. */ static -long lttng_cmd(int objd, unsigned int cmd, unsigned long arg) +long lttng_cmd(int objd, unsigned int cmd, unsigned long arg, + union ust_args *uargs) { switch (cmd) { case LTTNG_UST_SESSION: @@ -350,7 +352,8 @@ create_error: int lttng_abi_create_channel(int session_objd, struct lttng_ust_channel *chan_param, - enum channel_type channel_type) + enum channel_type channel_type, + union ust_args *uargs) { struct ltt_session *session = objd_private(session_objd); const struct lttng_ust_objd_ops *ops; @@ -399,9 +402,9 @@ int lttng_abi_create_channel(int session_objd, chan_param->num_subbuf, chan_param->switch_timer_interval, chan_param->read_timer_interval, - &chan_param->shm_fd, - &chan_param->wait_fd, - &chan_param->memory_map_size, + &uargs->channel.shm_fd, + &uargs->channel.wait_fd, + &uargs->channel.memory_map_size, &chan_priv_init); if (!chan) { ret = -EINVAL; @@ -435,6 +438,7 @@ objd_error: * @obj: the object * @cmd: the command * @arg: command arg + * @uargs: UST arguments (internal) * * This descriptor implements lttng commands: * LTTNG_UST_CHANNEL @@ -449,7 +453,8 @@ objd_error: * The returned channel will be deleted when its file descriptor is closed. */ static -long lttng_session_cmd(int objd, unsigned int cmd, unsigned long arg) +long lttng_session_cmd(int objd, unsigned int cmd, unsigned long arg, + union ust_args *uargs) { struct ltt_session *session = objd_private(objd); @@ -457,7 +462,7 @@ long lttng_session_cmd(int objd, unsigned int cmd, unsigned long arg) case LTTNG_UST_CHANNEL: return lttng_abi_create_channel(objd, (struct lttng_ust_channel *) arg, - PER_CPU_CHANNEL); + PER_CPU_CHANNEL, uargs); case LTTNG_UST_SESSION_START: case LTTNG_UST_ENABLE: return ltt_session_enable(session); @@ -467,7 +472,7 @@ long lttng_session_cmd(int objd, unsigned int cmd, unsigned long arg) case LTTNG_UST_METADATA: return lttng_abi_create_channel(objd, (struct lttng_ust_channel *) arg, - METADATA_CHANNEL); + METADATA_CHANNEL, uargs); default: return -EINVAL; } @@ -500,7 +505,8 @@ static const struct lttng_ust_objd_ops lttng_session_ops = { }; static -long lttng_tracepoint_list_cmd(int objd, unsigned int cmd, unsigned long arg) +long lttng_tracepoint_list_cmd(int objd, unsigned int cmd, unsigned long arg, + union ust_args *uargs) { struct lttng_ust_tracepoint_list *list = objd_private(objd); struct lttng_ust_tracepoint_iter *tp = @@ -587,7 +593,8 @@ struct stream_priv_data { }; static -int lttng_abi_open_stream(int channel_objd, struct lttng_ust_stream *info) +int lttng_abi_open_stream(int channel_objd, struct lttng_ust_stream *info, + union ust_args *uargs) { struct ltt_channel *channel = objd_private(channel_objd); struct lttng_ust_lib_ring_buffer *buf; @@ -595,7 +602,9 @@ int lttng_abi_open_stream(int channel_objd, struct lttng_ust_stream *info) int stream_objd, ret; buf = channel->ops->buffer_read_open(channel->chan, channel->handle, - &info->shm_fd, &info->wait_fd, &info->memory_map_size); + &uargs->stream.shm_fd, + &uargs->stream.wait_fd, + &uargs->stream.memory_map_size); if (!buf) return -ENOENT; @@ -742,6 +751,7 @@ objd_error: * @objd: the object descriptor * @cmd: the command * @arg: command arg + * @uargs: UST arguments (internal) * * This object descriptor implements lttng commands: * LTTNG_UST_STREAM @@ -759,7 +769,8 @@ objd_error: * Channel and event file descriptors also hold a reference on the session. */ static -long lttng_channel_cmd(int objd, unsigned int cmd, unsigned long arg) +long lttng_channel_cmd(int objd, unsigned int cmd, unsigned long arg, + union ust_args *uargs) { struct ltt_channel *channel = objd_private(objd); @@ -770,7 +781,7 @@ long lttng_channel_cmd(int objd, unsigned int cmd, unsigned long arg) stream = (struct lttng_ust_stream *) arg; /* stream used as output */ - return lttng_abi_open_stream(objd, stream); + return lttng_abi_open_stream(objd, stream, uargs); } case LTTNG_UST_EVENT: { @@ -808,6 +819,7 @@ long lttng_channel_cmd(int objd, unsigned int cmd, unsigned long arg) * @objd: the object descriptor * @cmd: the command * @arg: command arg + * @uargs: UST arguments (internal) * * This object descriptor implements lttng commands: * LTTNG_UST_STREAM @@ -816,7 +828,8 @@ long lttng_channel_cmd(int objd, unsigned int cmd, unsigned long arg) * Channel and event file descriptors also hold a reference on the session. */ static -long lttng_metadata_cmd(int objd, unsigned int cmd, unsigned long arg) +long lttng_metadata_cmd(int objd, unsigned int cmd, unsigned long arg, + union ust_args *uargs) { struct ltt_channel *channel = objd_private(objd); @@ -827,7 +840,7 @@ long lttng_metadata_cmd(int objd, unsigned int cmd, unsigned long arg) stream = (struct lttng_ust_stream *) arg; /* stream used as output */ - return lttng_abi_open_stream(objd, stream); + return lttng_abi_open_stream(objd, stream, uargs); } case LTTNG_UST_FLUSH_BUFFER: return channel->ops->flush_buffer(channel->chan, channel->handle); @@ -893,12 +906,14 @@ static const struct lttng_ust_objd_ops lttng_metadata_ops = { * @objd: the object descriptor * @cmd: the command * @arg: command arg + * @uargs: UST arguments (internal) * * This object descriptor implements lttng commands: * (None for now. Access is done directly though shm.) */ static -long lttng_rb_cmd(int objd, unsigned int cmd, unsigned long arg) +long lttng_rb_cmd(int objd, unsigned int cmd, unsigned long arg, + union ust_args *uargs) { switch (cmd) { default: @@ -949,6 +964,7 @@ static const struct lttng_ust_objd_ops lib_ring_buffer_objd_ops = { * @objd: the object descriptor * @cmd: the command * @arg: command arg + * @uargs: UST arguments (internal) * * This object descriptor implements lttng commands: * LTTNG_UST_CONTEXT @@ -959,7 +975,8 @@ static const struct lttng_ust_objd_ops lib_ring_buffer_objd_ops = { * Disable recording for this event (strong disable) */ static -long lttng_event_cmd(int objd, unsigned int cmd, unsigned long arg) +long lttng_event_cmd(int objd, unsigned int cmd, unsigned long arg, + union ust_args *uargs) { struct ltt_event *event = objd_private(objd); @@ -999,6 +1016,7 @@ static const struct lttng_ust_objd_ops lttng_event_ops = { * @objd: the object descriptor * @cmd: the command * @arg: command arg + * @uargs: UST arguments (internal) * * This object descriptor implements lttng commands: * LTTNG_UST_CONTEXT @@ -1010,7 +1028,8 @@ static const struct lttng_ust_objd_ops lttng_event_ops = { * Disable recording for these loglevel events (strong disable) */ static -long lttng_loglevel_cmd(int objd, unsigned int cmd, unsigned long arg) +long lttng_loglevel_cmd(int objd, unsigned int cmd, unsigned long arg, + union ust_args *uargs) { struct session_loglevel *loglevel = objd_private(objd); @@ -1053,6 +1072,7 @@ static const struct lttng_ust_objd_ops lttng_loglevel_ops = { * @objd: the object descriptor * @cmd: the command * @arg: command arg + * @uargs: UST arguments (internal) * * This object descriptor implements lttng commands: * LTTNG_UST_CONTEXT @@ -1064,7 +1084,8 @@ static const struct lttng_ust_objd_ops lttng_loglevel_ops = { * Disable recording for these wildcard events (strong disable) */ static -long lttng_wildcard_cmd(int objd, unsigned int cmd, unsigned long arg) +long lttng_wildcard_cmd(int objd, unsigned int cmd, unsigned long arg, + union ust_args *uargs) { struct session_wildcard *wildcard = objd_private(objd); diff --git a/liblttng-ust/lttng-ust-comm.c b/liblttng-ust/lttng-ust-comm.c index b968b498..516e39d2 100644 --- a/liblttng-ust/lttng-ust-comm.c +++ b/liblttng-ust/lttng-ust-comm.c @@ -239,6 +239,7 @@ int handle_message(struct sock_info *sock_info, const struct lttng_ust_objd_ops *ops; struct ustcomm_ust_reply lur; int shm_fd, wait_fd; + union ust_args args; ust_lock(); @@ -271,7 +272,8 @@ int handle_message(struct sock_info *sock_info, default: if (ops->cmd) ret = ops->cmd(lum->handle, lum->cmd, - (unsigned long) &lum->u); + (unsigned long) &lum->u, + &args); else ret = -ENOSYS; break; @@ -293,15 +295,15 @@ end: * Special-case reply to send stream info. * Use lum.u output. */ - lur.u.stream.memory_map_size = lum->u.stream.memory_map_size; - shm_fd = lum->u.stream.shm_fd; - wait_fd = lum->u.stream.wait_fd; + lur.u.stream.memory_map_size = *args.stream.memory_map_size; + shm_fd = *args.stream.shm_fd; + wait_fd = *args.stream.wait_fd; break; case LTTNG_UST_METADATA: case LTTNG_UST_CHANNEL: - lur.u.channel.memory_map_size = lum->u.channel.memory_map_size; - shm_fd = lum->u.channel.shm_fd; - wait_fd = lum->u.channel.wait_fd; + lur.u.channel.memory_map_size = *args.channel.memory_map_size; + shm_fd = *args.channel.shm_fd; + wait_fd = *args.channel.wait_fd; break; case LTTNG_UST_TRACER_VERSION: lur.u.version = lum->u.version; @@ -336,6 +338,48 @@ end: goto error; } } + /* + * We still have the memory map reference, and the fds have been + * sent to the sessiond. We can therefore close those fds. + */ + if (lur.ret_code == USTCOMM_OK) { + switch (lum->cmd) { + case LTTNG_UST_STREAM: + if (shm_fd >= 0) { + ret = close(shm_fd); + if (ret) { + PERROR("Error closing stream shm_fd"); + } + *args.stream.shm_fd = -1; + } + if (wait_fd >= 0) { + ret = close(wait_fd); + if (ret) { + PERROR("Error closing stream wait_fd"); + } + *args.stream.wait_fd = -1; + } + break; + case LTTNG_UST_METADATA: + case LTTNG_UST_CHANNEL: + if (shm_fd >= 0) { + ret = close(shm_fd); + if (ret) { + PERROR("Error closing channel shm_fd"); + } + *args.channel.shm_fd = -1; + } + if (wait_fd >= 0) { + ret = close(wait_fd); + if (ret) { + PERROR("Error closing channel wait_fd"); + } + *args.channel.wait_fd = -1; + } + break; + } + } + error: ust_unlock(); return ret; diff --git a/libringbuffer/frontend.h b/libringbuffer/frontend.h index eb95e622..ce79cdee 100644 --- a/libringbuffer/frontend.h +++ b/libringbuffer/frontend.h @@ -52,8 +52,8 @@ struct lttng_ust_shm_handle *channel_create(const struct lttng_ust_lib_ring_buff size_t subbuf_size, size_t num_subbuf, unsigned int switch_timer_interval, unsigned int read_timer_interval, - int *shm_fd, int *wait_fd, - uint64_t *memory_map_size); + int **shm_fd, int **wait_fd, + uint64_t **memory_map_size); /* channel_handle_create - for consumer. */ extern @@ -89,8 +89,8 @@ extern struct lttng_ust_lib_ring_buffer *channel_get_ring_buffer( const struct lttng_ust_lib_ring_buffer_config *config, struct channel *chan, int cpu, struct lttng_ust_shm_handle *handle, - int *shm_fd, int *wait_fd, - uint64_t *memory_map_size); + int **shm_fd, int **wait_fd, + uint64_t **memory_map_size); extern int lib_ring_buffer_open_read(struct lttng_ust_lib_ring_buffer *buf, struct lttng_ust_shm_handle *handle, int shadow); diff --git a/libringbuffer/ring_buffer_frontend.c b/libringbuffer/ring_buffer_frontend.c index f558793a..d0649f3e 100644 --- a/libringbuffer/ring_buffer_frontend.c +++ b/libringbuffer/ring_buffer_frontend.c @@ -420,7 +420,7 @@ struct lttng_ust_shm_handle *channel_create(const struct lttng_ust_lib_ring_buff void *buf_addr, size_t subbuf_size, size_t num_subbuf, unsigned int switch_timer_interval, unsigned int read_timer_interval, - int *shm_fd, int *wait_fd, uint64_t *memory_map_size) + int **shm_fd, int **wait_fd, uint64_t **memory_map_size) { int ret, cpu; size_t shmsize, chansize; @@ -610,8 +610,8 @@ struct lttng_ust_lib_ring_buffer *channel_get_ring_buffer( const struct lttng_ust_lib_ring_buffer_config *config, struct channel *chan, int cpu, struct lttng_ust_shm_handle *handle, - int *shm_fd, int *wait_fd, - uint64_t *memory_map_size) + int **shm_fd, int **wait_fd, + uint64_t **memory_map_size) { struct shm_ref *ref; diff --git a/libringbuffer/shm.c b/libringbuffer/shm.c index 994204d1..69e4b1a7 100644 --- a/libringbuffer/shm.c +++ b/libringbuffer/shm.c @@ -211,10 +211,12 @@ void shmp_object_destroy(struct shm_object *obj) assert(0); } } - ret = close(obj->shm_fd); - if (ret) { - PERROR("close"); - assert(0); + if (obj->shm_fd >= 0) { + ret = close(obj->shm_fd); + if (ret) { + PERROR("close"); + assert(0); + } } for (i = 0; i < 2; i++) { if (obj->wait_fd[i] < 0) diff --git a/libringbuffer/shm.h b/libringbuffer/shm.h index 41111447..104eece6 100644 --- a/libringbuffer/shm.h +++ b/libringbuffer/shm.h @@ -107,7 +107,7 @@ int shm_get_wait_fd(struct lttng_ust_shm_handle *handle, struct shm_ref *ref) static inline int shm_get_object_data(struct lttng_ust_shm_handle *handle, struct shm_ref *ref, - int *shm_fd, int *wait_fd, uint64_t *memory_map_size) + int **shm_fd, int **wait_fd, uint64_t **memory_map_size) { struct shm_object_table *table = handle->table; struct shm_object *obj; @@ -117,9 +117,9 @@ int shm_get_object_data(struct lttng_ust_shm_handle *handle, struct shm_ref *ref if (caa_unlikely(index >= table->allocated_len)) return -EPERM; obj = &table->objects[index]; - *shm_fd = obj->shm_fd; - *wait_fd = obj->wait_fd[0]; - *memory_map_size = obj->allocated_len; + *shm_fd = &obj->shm_fd; + *wait_fd = &obj->wait_fd[0]; + *memory_map_size = &obj->allocated_len; return 0; } diff --git a/tests/ust-basic-tracing/ust-basic-tracing.c b/tests/ust-basic-tracing/ust-basic-tracing.c index d11b587b..da2852f8 100644 --- a/tests/ust-basic-tracing/ust-basic-tracing.c +++ b/tests/ust-basic-tracing/ust-basic-tracing.c @@ -203,8 +203,8 @@ int consume_stream(struct lttng_ust_shm_handle *handle, int cpu, char *outfile) struct channel *chan; struct lttng_ust_lib_ring_buffer *buf; int outfd, ret; - int shm_fd, wait_fd; - uint64_t memory_map_size; + int *shm_fd, *wait_fd; + uint64_t *memory_map_size; chan = shmp(handle, handle->chan); diff --git a/tests/ust-multi-test/ust-multi-test.c b/tests/ust-multi-test/ust-multi-test.c index cfd6d355..b3c97ea1 100644 --- a/tests/ust-multi-test/ust-multi-test.c +++ b/tests/ust-multi-test/ust-multi-test.c @@ -210,8 +210,8 @@ int consume_stream(struct lttng_ust_shm_handle *handle, int cpu, char *outfile) struct channel *chan; struct lttng_ust_lib_ring_buffer *buf; int outfd, ret; - int shm_fd, wait_fd; - uint64_t memory_map_size; + int *shm_fd, *wait_fd; + uint64_t *memory_map_size; chan = shmp(handle, handle->chan); -- 2.34.1