X-Git-Url: https://git.liburcu.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fust-app.cpp;h=b4192398b1682b01e4779df80f05945c7b1627eb;hb=84083c3c07b8c1f6320963c395d9c4a9012cdb44;hp=44db0accdd50b240e89152e52e0e1f7d2dc2348d;hpb=f46376a14da2eb796690cb4e718e8b213839d6ea;p=lttng-tools.git diff --git a/src/bin/lttng-sessiond/ust-app.cpp b/src/bin/lttng-sessiond/ust-app.cpp index 44db0accd..b4192398b 100644 --- a/src/bin/lttng-sessiond/ust-app.cpp +++ b/src/bin/lttng-sessiond/ust-app.cpp @@ -21,35 +21,35 @@ #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include -#include +#include #include #include -#include +#include #include -#include -#include - -#include "buffer-registry.h" -#include "condition-internal.h" -#include "fd-limit.h" -#include "health-sessiond.h" -#include "ust-app.h" -#include "ust-consumer.h" -#include "lttng-ust-ctl.h" -#include "lttng-ust-error.h" -#include "utils.h" -#include "session.h" -#include "lttng-sessiond.h" -#include "notification-thread-commands.h" -#include "rotate.h" -#include "event.h" -#include "event-notifier-error-accounting.h" -#include "ust-field-utils.h" +#include +#include + +#include "buffer-registry.hpp" +#include "condition-internal.hpp" +#include "fd-limit.hpp" +#include "health-sessiond.hpp" +#include "ust-app.hpp" +#include "ust-consumer.hpp" +#include "lttng-ust-ctl.hpp" +#include "lttng-ust-error.hpp" +#include "utils.hpp" +#include "session.hpp" +#include "lttng-sessiond.hpp" +#include "notification-thread-commands.hpp" +#include "rotate.hpp" +#include "event.hpp" +#include "event-notifier-error-accounting.hpp" +#include "ust-field-utils.hpp" struct lttng_ht *ust_app_ht; struct lttng_ht *ust_app_ht_by_sock; @@ -240,10 +240,10 @@ static void close_notify_sock_rcu(struct rcu_head *head) * A registry per UID object MUST exists before calling this function or else * it LTTNG_ASSERT() if not found. RCU read side lock must be acquired. */ -static struct ust_registry_session *get_session_registry( +static ust_registry_session *get_session_registry( struct ust_app_session *ua_sess) { - struct ust_registry_session *registry = NULL; + ust_registry_session *registry = NULL; LTTNG_ASSERT(ua_sess); @@ -543,7 +543,7 @@ void delete_ust_app_channel(int sock, struct ust_app_channel *ua_chan, struct ust_app_event *ua_event; struct ust_app_ctx *ua_ctx; struct ust_app_stream *stream, *stmp; - struct ust_registry_session *registry; + ust_registry_session *registry; LTTNG_ASSERT(ua_chan); ASSERT_RCU_READ_LOCKED(); @@ -657,7 +657,7 @@ int ust_app_release_object(struct ust_app *app, struct lttng_ust_abi_object_data * but it can be caused by recoverable errors (e.g. the application has * terminated concurrently). */ -ssize_t ust_app_push_metadata(struct ust_registry_session *registry, +ssize_t ust_app_push_metadata(ust_registry_session *registry, struct consumer_socket *socket, int send_zero_data) { int ret; @@ -670,7 +670,7 @@ ssize_t ust_app_push_metadata(struct ust_registry_session *registry, LTTNG_ASSERT(socket); ASSERT_RCU_READ_LOCKED(); - metadata_key = registry->metadata_key; + metadata_key = registry->_metadata_key; /* * Means that no metadata was assigned to the session. This can @@ -680,13 +680,13 @@ ssize_t ust_app_push_metadata(struct ust_registry_session *registry, return 0; } - offset = registry->metadata_len_sent; - len = registry->metadata_len - registry->metadata_len_sent; - new_metadata_len_sent = registry->metadata_len; - metadata_version = registry->metadata_version; + offset = registry->_metadata_len_sent; + len = registry->_metadata_len - registry->_metadata_len_sent; + new_metadata_len_sent = registry->_metadata_len; + metadata_version = registry->_metadata_version; if (len == 0) { DBG3("No metadata to push for metadata key %" PRIu64, - registry->metadata_key); + registry->_metadata_key); ret_val = len; if (send_zero_data) { DBG("No metadata to push"); @@ -696,17 +696,17 @@ ssize_t ust_app_push_metadata(struct ust_registry_session *registry, } /* Allocate only what we have to send. */ - metadata_str = (char *) zmalloc(len); + metadata_str = calloc(len); if (!metadata_str) { PERROR("zmalloc ust app metadata string"); ret_val = -ENOMEM; goto error; } /* Copy what we haven't sent out. */ - memcpy(metadata_str, registry->metadata + offset, len); + memcpy(metadata_str, registry->_metadata + offset, len); push_data: - pthread_mutex_unlock(®istry->lock); + pthread_mutex_unlock(®istry->_lock); /* * We need to unlock the registry while we push metadata to * break a circular dependency between the consumerd metadata @@ -721,7 +721,7 @@ push_data: */ ret = consumer_push_metadata(socket, metadata_key, metadata_str, len, offset, metadata_version); - pthread_mutex_lock(®istry->lock); + pthread_mutex_lock(®istry->_lock); if (ret < 0) { /* * There is an acceptable race here between the registry @@ -758,8 +758,8 @@ push_data: * largest metadata_len_sent value of the concurrent * send. */ - registry->metadata_len_sent = - std::max(registry->metadata_len_sent, + registry->_metadata_len_sent = + std::max(registry->_metadata_len_sent, new_metadata_len_sent); } free(metadata_str); @@ -775,7 +775,7 @@ error: * the metadata cache has been destroyed on the * consumer. */ - registry->metadata_closed = 1; + registry->_metadata_closed = true; } error_push: free(metadata_str); @@ -796,7 +796,7 @@ error_push: * but it can be caused by recoverable errors (e.g. the application has * terminated concurrently). */ -static int push_metadata(struct ust_registry_session *registry, +static int push_metadata(ust_registry_session *registry, struct consumer_output *consumer) { int ret_val; @@ -807,14 +807,14 @@ static int push_metadata(struct ust_registry_session *registry, LTTNG_ASSERT(consumer); ASSERT_RCU_READ_LOCKED(); - pthread_mutex_lock(®istry->lock); - if (registry->metadata_closed) { + pthread_mutex_lock(®istry->_lock); + if (registry->_metadata_closed) { ret_val = -EPIPE; goto error; } /* Get consumer socket to use to push the metadata.*/ - socket = consumer_find_socket_by_bitness(registry->bits_per_long, + socket = consumer_find_socket_by_bitness(registry->_bits_per_long, consumer); if (!socket) { ret_val = -1; @@ -826,11 +826,11 @@ static int push_metadata(struct ust_registry_session *registry, ret_val = ret; goto error; } - pthread_mutex_unlock(®istry->lock); + pthread_mutex_unlock(®istry->_lock); return 0; error: - pthread_mutex_unlock(®istry->lock); + pthread_mutex_unlock(®istry->_lock); return ret_val; } @@ -846,7 +846,7 @@ error: * * Return 0 on success else a negative value. */ -static int close_metadata(struct ust_registry_session *registry, +static int close_metadata(ust_registry_session *registry, struct consumer_output *consumer) { int ret; @@ -859,18 +859,18 @@ static int close_metadata(struct ust_registry_session *registry, rcu_read_lock(); - pthread_mutex_lock(®istry->lock); - metadata_key = registry->metadata_key; - registry_was_already_closed = registry->metadata_closed; + pthread_mutex_lock(®istry->_lock); + metadata_key = registry->_metadata_key; + registry_was_already_closed = registry->_metadata_closed; if (metadata_key != 0) { /* * Metadata closed. Even on error this means that the consumer * is not responding or not found so either way a second close * should NOT be emit for this registry. */ - registry->metadata_closed = 1; + registry->_metadata_closed = true; } - pthread_mutex_unlock(®istry->lock); + pthread_mutex_unlock(®istry->_lock); if (metadata_key == 0 || registry_was_already_closed) { ret = 0; @@ -878,7 +878,7 @@ static int close_metadata(struct ust_registry_session *registry, } /* Get consumer socket to use to push the metadata.*/ - socket = consumer_find_socket_by_bitness(registry->bits_per_long, + socket = consumer_find_socket_by_bitness(registry->_bits_per_long, consumer); if (!socket) { ret = -1; @@ -918,7 +918,7 @@ void delete_ust_app_session(int sock, struct ust_app_session *ua_sess, int ret; struct lttng_ht_iter iter; struct ust_app_channel *ua_chan; - struct ust_registry_session *registry; + ust_registry_session *registry; LTTNG_ASSERT(ua_sess); ASSERT_RCU_READ_LOCKED(); @@ -1160,7 +1160,7 @@ struct ust_app_session *alloc_ust_app_session(void) struct ust_app_session *ua_sess; /* Init most of the default value by allocating and zeroing */ - ua_sess = (ust_app_session *) zmalloc(sizeof(struct ust_app_session)); + ua_sess = zmalloc(); if (ua_sess == NULL) { PERROR("malloc"); goto error_free; @@ -1188,7 +1188,7 @@ struct ust_app_channel *alloc_ust_app_channel(const char *name, struct ust_app_channel *ua_chan; /* Init most of the default value by allocating and zeroing */ - ua_chan = (ust_app_channel *) zmalloc(sizeof(struct ust_app_channel)); + ua_chan = zmalloc(); if (ua_chan == NULL) { PERROR("malloc"); goto error; @@ -1240,7 +1240,7 @@ struct ust_app_stream *ust_app_alloc_stream(void) { struct ust_app_stream *stream = NULL; - stream = (ust_app_stream *) zmalloc(sizeof(*stream)); + stream = zmalloc(); if (stream == NULL) { PERROR("zmalloc ust app stream"); goto error; @@ -1263,7 +1263,7 @@ struct ust_app_event *alloc_ust_app_event(char *name, struct ust_app_event *ua_event; /* Init most of the default value by allocating and zeroing */ - ua_event = (ust_app_event *) zmalloc(sizeof(struct ust_app_event)); + ua_event = zmalloc(); if (ua_event == NULL) { PERROR("Failed to allocate ust_app_event structure"); goto error; @@ -1300,7 +1300,7 @@ static struct ust_app_event_notifier_rule *alloc_ust_app_event_notifier_rule( struct lttng_condition *condition = NULL; const struct lttng_event_rule *event_rule = NULL; - ua_event_notifier_rule = (ust_app_event_notifier_rule *) zmalloc(sizeof(struct ust_app_event_notifier_rule)); + ua_event_notifier_rule = zmalloc(); if (ua_event_notifier_rule == NULL) { PERROR("Failed to allocate ust_app_event_notifier_rule structure"); goto error; @@ -1360,7 +1360,7 @@ struct ust_app_ctx *alloc_ust_app_ctx(struct lttng_ust_context_attr *uctx) { struct ust_app_ctx *ua_ctx; - ua_ctx = (ust_app_ctx *) zmalloc(sizeof(struct ust_app_ctx)); + ua_ctx = zmalloc(); if (ua_ctx == NULL) { goto error; } @@ -1403,7 +1403,7 @@ static struct lttng_ust_abi_filter_bytecode *create_ust_filter_bytecode_from_byt struct lttng_ust_abi_filter_bytecode *filter = NULL; /* Copy filter bytecode. */ - filter = (lttng_ust_abi_filter_bytecode *) zmalloc(sizeof(*filter) + orig_f->len); + filter = zmalloc(sizeof(*filter) + orig_f->len); if (!filter) { PERROR("Failed to allocate lttng_ust_filter_bytecode: bytecode len = %" PRIu32 " bytes", orig_f->len); goto error; @@ -1427,7 +1427,7 @@ create_ust_capture_bytecode_from_bytecode(const struct lttng_bytecode *orig_f) struct lttng_ust_abi_capture_bytecode *capture = NULL; /* Copy capture bytecode. */ - capture = (lttng_ust_abi_capture_bytecode *) zmalloc(sizeof(*capture) + orig_f->len); + capture = zmalloc(sizeof(*capture) + orig_f->len); if (!capture) { PERROR("Failed to allocate lttng_ust_abi_capture_bytecode: bytecode len = %" PRIu32 " bytes", orig_f->len); goto error; @@ -1711,7 +1711,7 @@ struct lttng_ust_abi_event_exclusion *create_ust_exclusion_from_exclusion( size_t exclusion_alloc_size = sizeof(struct lttng_ust_abi_event_exclusion) + LTTNG_UST_ABI_SYM_NAME_LEN * exclusion->count; - ust_exclusion = (lttng_ust_abi_event_exclusion *) zmalloc(exclusion_alloc_size); + ust_exclusion = zmalloc(exclusion_alloc_size); if (!ust_exclusion) { PERROR("malloc"); goto end; @@ -1984,8 +1984,6 @@ static int send_channel_pid_to_ust(struct ust_app *app, cds_list_del(&stream->list); delete_ust_app_stream(-1, stream, app); } - /* Flag the channel that it is sent to the application. */ - ua_chan->is_sent = 1; error: health_code_update(); @@ -2149,7 +2147,7 @@ static int init_ust_event_notifier_from_event_rule( event_notifier->event.instrumentation = LTTNG_UST_ABI_TRACEPOINT; ret = lttng_strncpy(event_notifier->event.name, pattern, - LTTNG_UST_ABI_SYM_NAME_LEN - 1); + sizeof(event_notifier->event.name)); if (ret) { ERR("Failed to copy event rule pattern to notifier: pattern = '%s' ", pattern); @@ -2331,7 +2329,7 @@ static void shadow_copy_event(struct ust_app_event *ua_event, if (uevent->exclusion) { exclusion_alloc_size = sizeof(struct lttng_event_exclusion) + LTTNG_UST_ABI_SYM_NAME_LEN * uevent->exclusion->count; - ua_event->exclusion = (lttng_event_exclusion *) zmalloc(exclusion_alloc_size); + ua_event->exclusion = zmalloc(exclusion_alloc_size); if (ua_event->exclusion == NULL) { PERROR("malloc"); } else { @@ -2536,7 +2534,7 @@ static int setup_buffer_reg_pid(struct ust_app_session *ua_sess, } /* Initialize registry. */ - ret = ust_registry_session_init(®_pid->registry->reg.ust, app, + reg_pid->registry->reg.ust = ust_registry_session_per_pid_create(app, app->bits_per_long, app->uint8_t_alignment, app->uint16_t_alignment, app->uint32_t_alignment, app->uint64_t_alignment, app->long_alignment, @@ -2544,9 +2542,8 @@ static int setup_buffer_reg_pid(struct ust_app_session *ua_sess, reg_pid->root_shm_path, reg_pid->shm_path, lttng_credentials_get_uid(&ua_sess->effective_credentials), lttng_credentials_get_gid(&ua_sess->effective_credentials), - ua_sess->tracing_id, - app->uid); - if (ret < 0) { + ua_sess->tracing_id); + if (!reg_pid->registry->reg.ust) { /* * reg_pid->registry->reg.ust is NULL upon error, so we need to * destroy the buffer registry, because it is always expected @@ -2606,7 +2603,7 @@ static int setup_buffer_reg_uid(struct ltt_ust_session *usess, } /* Initialize registry. */ - ret = ust_registry_session_init(®_uid->registry->reg.ust, NULL, + reg_uid->registry->reg.ust = ust_registry_session_per_uid_create( app->bits_per_long, app->uint8_t_alignment, app->uint16_t_alignment, app->uint32_t_alignment, app->uint64_t_alignment, app->long_alignment, @@ -2614,7 +2611,7 @@ static int setup_buffer_reg_uid(struct ltt_ust_session *usess, app->version.minor, reg_uid->root_shm_path, reg_uid->shm_path, usess->uid, usess->gid, ua_sess->tracing_id, app->uid); - if (ret < 0) { + if (!reg_uid->registry->reg.ust) { /* * reg_uid->registry->reg.ust is NULL upon error, so we need to * destroy the buffer registry, because it is always expected @@ -2624,6 +2621,7 @@ static int setup_buffer_reg_uid(struct ltt_ust_session *usess, buffer_reg_uid_destroy(reg_uid, NULL); goto error; } + /* Add node to teardown list of the session. */ cds_list_add(®_uid->lnode, &usess->buffer_reg_uid_list); @@ -2983,7 +2981,7 @@ error: */ static int do_consumer_create_channel(struct ltt_ust_session *usess, struct ust_app_session *ua_sess, struct ust_app_channel *ua_chan, - int bitness, struct ust_registry_session *registry) + int bitness, ust_registry_session *registry) { int ret; unsigned int nb_fd = 0; @@ -3319,7 +3317,7 @@ static int send_channel_uid_to_ust(struct buffer_reg_channel *buf_reg_chan, /* Send all streams to application. */ pthread_mutex_lock(&buf_reg_chan->stream_list_lock); cds_list_for_each_entry(reg_stream, &buf_reg_chan->streams, lnode) { - struct ust_app_stream stream; + struct ust_app_stream stream = {}; ret = duplicate_stream_object(reg_stream, &stream); if (ret < 0) { @@ -3336,8 +3334,8 @@ static int send_channel_uid_to_ust(struct buffer_reg_channel *buf_reg_chan, * Treat this the same way as an application * that is exiting. */ - WARN("Communication with application %d timed out on send_stream for stream \"%s\" of channel \"%s\" of session \"%" PRIu64 "\".", - app->pid, stream.name, + WARN("Communication with application %d timed out on send_stream for stream of channel \"%s\" of session \"%" PRIu64 "\".", + app->pid, ua_chan->name, ua_sess->tracing_id); ret = -ENOTCONN; @@ -3352,7 +3350,6 @@ static int send_channel_uid_to_ust(struct buffer_reg_channel *buf_reg_chan, */ (void) release_ust_app_stream(-1, &stream, app); } - ua_chan->is_sent = 1; error_stream_unlock: pthread_mutex_unlock(&buf_reg_chan->stream_list_lock); @@ -3411,8 +3408,8 @@ static int create_channel_per_uid(struct ust_app *app, session = session_find_by_id(ua_sess->tracing_id); LTTNG_ASSERT(session); - LTTNG_ASSERT(pthread_mutex_trylock(&session->lock)); - LTTNG_ASSERT(session_trylock_list()); + ASSERT_LOCKED(session->lock); + ASSERT_SESSION_LIST_LOCKED(); /* * Create the buffers on the consumer side. This call populates the @@ -3446,13 +3443,13 @@ static int create_channel_per_uid(struct ust_app *app, } /* Notify the notification subsystem of the channel's creation. */ - pthread_mutex_lock(®_uid->registry->reg.ust->lock); + pthread_mutex_lock(®_uid->registry->reg.ust->_lock); ust_reg_chan = ust_registry_channel_find(reg_uid->registry->reg.ust, ua_chan->tracing_channel_id); LTTNG_ASSERT(ust_reg_chan); ust_reg_chan->consumer_key = ua_chan->key; ust_reg_chan = NULL; - pthread_mutex_unlock(®_uid->registry->reg.ust->lock); + pthread_mutex_unlock(®_uid->registry->reg.ust->_lock); notification_ret = notification_thread_command_add_channel( the_notification_thread_handle, session->name, @@ -3498,7 +3495,7 @@ static int create_channel_per_pid(struct ust_app *app, struct ust_app_channel *ua_chan) { int ret; - struct ust_registry_session *registry; + ust_registry_session *registry; enum lttng_error_code cmd_ret; struct ltt_session *session = NULL; uint64_t chan_reg_key; @@ -3527,9 +3524,8 @@ static int create_channel_per_pid(struct ust_app *app, session = session_find_by_id(ua_sess->tracing_id); LTTNG_ASSERT(session); - - LTTNG_ASSERT(pthread_mutex_trylock(&session->lock)); - LTTNG_ASSERT(session_trylock_list()); + ASSERT_LOCKED(session->lock); + ASSERT_SESSION_LIST_LOCKED(); /* Create and get channel on the consumer side. */ ret = do_consumer_create_channel(usess, ua_sess, ua_chan, @@ -3549,11 +3545,11 @@ static int create_channel_per_pid(struct ust_app *app, } chan_reg_key = ua_chan->key; - pthread_mutex_lock(®istry->lock); + pthread_mutex_lock(®istry->_lock); ust_reg_chan = ust_registry_channel_find(registry, chan_reg_key); LTTNG_ASSERT(ust_reg_chan); ust_reg_chan->consumer_key = ua_chan->key; - pthread_mutex_unlock(®istry->lock); + pthread_mutex_unlock(®istry->_lock); cmd_ret = notification_thread_command_add_channel( the_notification_thread_handle, session->name, @@ -3820,7 +3816,7 @@ static int create_ust_app_metadata(struct ust_app_session *ua_sess, int ret = 0; struct ust_app_channel *metadata; struct consumer_socket *socket; - struct ust_registry_session *registry; + ust_registry_session *registry; struct ltt_session *session = NULL; LTTNG_ASSERT(ua_sess); @@ -3832,10 +3828,10 @@ static int create_ust_app_metadata(struct ust_app_session *ua_sess, /* The UST app session is held registry shall not be null. */ LTTNG_ASSERT(registry); - pthread_mutex_lock(®istry->lock); + pthread_mutex_lock(®istry->_lock); /* Metadata already exists for this registry or it was closed previously */ - if (registry->metadata_key || registry->metadata_closed) { + if (registry->_metadata_key || registry->_metadata_closed) { ret = 0; goto error; } @@ -3870,13 +3866,12 @@ static int create_ust_app_metadata(struct ust_app_session *ua_sess, * consumer requesting the metadata and the ask_channel call on our side * did not returned yet. */ - registry->metadata_key = metadata->key; + registry->_metadata_key = metadata->key; session = session_find_by_id(ua_sess->tracing_id); LTTNG_ASSERT(session); - - LTTNG_ASSERT(pthread_mutex_trylock(&session->lock)); - LTTNG_ASSERT(session_trylock_list()); + ASSERT_LOCKED(session->lock); + ASSERT_SESSION_LIST_LOCKED(); /* * Ask the metadata channel creation to the consumer. The metadata object @@ -3888,7 +3883,7 @@ static int create_ust_app_metadata(struct ust_app_session *ua_sess, registry, session->current_trace_chunk); if (ret < 0) { /* Nullify the metadata key so we don't try to close it later on. */ - registry->metadata_key = 0; + registry->_metadata_key = 0; goto error_consumer; } @@ -3901,7 +3896,7 @@ static int create_ust_app_metadata(struct ust_app_session *ua_sess, ret = consumer_setup_metadata(socket, metadata->key); if (ret < 0) { /* Nullify the metadata key so we don't try to close it later on. */ - registry->metadata_key = 0; + registry->_metadata_key = 0; goto error_consumer; } @@ -3912,7 +3907,7 @@ error_consumer: lttng_fd_put(LTTNG_FD_APPS, 1); delete_ust_app_channel(-1, metadata, app); error: - pthread_mutex_unlock(®istry->lock); + pthread_mutex_unlock(®istry->_lock); if (session) { session_put(session); } @@ -3993,7 +3988,7 @@ struct ust_app *ust_app_create(struct ust_register_msg *msg, int sock) goto error; } - lta = (ust_app *) zmalloc(sizeof(struct ust_app)); + lta = zmalloc(); if (lta == NULL) { PERROR("malloc"); goto error_free_pipe; @@ -4270,7 +4265,7 @@ void ust_app_unregister(int sock) */ cds_lfht_for_each_entry(lta->sessions->ht, &iter.iter, ua_sess, node.node) { - struct ust_registry_session *registry; + ust_registry_session *registry; ret = lttng_ht_del(lta->sessions, &iter); if (ret) { @@ -4369,7 +4364,7 @@ int ust_app_list_events(struct lttng_event **events) struct lttng_event *tmp_event; nbmem = UST_APP_EVENT_LIST_SIZE; - tmp_event = (lttng_event *) zmalloc(nbmem * sizeof(struct lttng_event)); + tmp_event = calloc(nbmem); if (tmp_event == NULL) { PERROR("zmalloc ust app events"); ret = -ENOMEM; @@ -4504,7 +4499,7 @@ int ust_app_list_event_fields(struct lttng_event_field **fields) struct lttng_event_field *tmp_event; nbmem = UST_APP_EVENT_LIST_SIZE; - tmp_event = (lttng_event_field *) zmalloc(nbmem * sizeof(struct lttng_event_field)); + tmp_event = calloc(nbmem); if (tmp_event == NULL) { PERROR("zmalloc ust app event fields"); ret = -ENOMEM; @@ -5212,7 +5207,7 @@ int ust_app_stop_trace(struct ltt_ust_session *usess, struct ust_app *app) { int ret = 0; struct ust_app_session *ua_sess; - struct ust_registry_session *registry; + ust_registry_session *registry; DBG("Stopping tracing for ust app pid %d", app->pid); @@ -5394,7 +5389,7 @@ int ust_app_flush_session(struct ltt_ust_session *usess) /* Flush all per UID buffers associated to that session. */ cds_list_for_each_entry(reg, &usess->buffer_reg_uid_list, lnode) { - struct ust_registry_session *ust_session_reg; + ust_registry_session *ust_session_reg; struct buffer_reg_channel *buf_reg_chan; struct consumer_socket *socket; @@ -6389,11 +6384,13 @@ static int ust_app_fixup_legacy_context_fields(size_t *_nr_fields, if (!found) { goto end; } - new_fields = (struct lttng_ust_ctl_field *) zmalloc(sizeof(*new_fields) * new_nr_fields); + + new_fields = calloc(new_nr_fields); if (!new_fields) { ret = -ENOMEM; goto end; } + for (i = 0, j = 0; i < nr_fields; i++, j++) { const struct lttng_ust_ctl_field *field = &fields[i]; struct lttng_ust_ctl_field *new_field = &new_fields[j]; @@ -6455,7 +6452,7 @@ static int reply_ust_register_channel(int sock, int cobjd, struct ust_app *app; struct ust_app_channel *ua_chan; struct ust_app_session *ua_sess; - struct ust_registry_session *registry; + ust_registry_session *registry; struct ust_registry_channel *ust_reg_chan; rcu_read_lock(); @@ -6495,7 +6492,7 @@ static int reply_ust_register_channel(int sock, int cobjd, chan_reg_key = ua_chan->key; } - pthread_mutex_lock(®istry->lock); + pthread_mutex_lock(®istry->_lock); ust_reg_chan = ust_registry_channel_find(registry, chan_reg_key); LTTNG_ASSERT(ust_reg_chan); @@ -6571,7 +6568,7 @@ reply: ust_reg_chan->register_done = 1; error: - pthread_mutex_unlock(®istry->lock); + pthread_mutex_unlock(®istry->_lock); error_rcu_unlock: rcu_read_unlock(); free(fields); @@ -6597,7 +6594,7 @@ static int add_event_ust_registry(int sock, int sobjd, int cobjd, char *name, struct ust_app *app; struct ust_app_channel *ua_chan; struct ust_app_session *ua_sess; - struct ust_registry_session *registry; + ust_registry_session *registry; rcu_read_lock(); @@ -6634,7 +6631,7 @@ static int add_event_ust_registry(int sock, int sobjd, int cobjd, char *name, chan_reg_key = ua_chan->key; } - pthread_mutex_lock(®istry->lock); + pthread_mutex_lock(®istry->_lock); /* * From this point on, this call acquires the ownership of the sig, fields @@ -6677,7 +6674,7 @@ static int add_event_ust_registry(int sock, int sobjd, int cobjd, char *name, name, event_id); error: - pthread_mutex_unlock(®istry->lock); + pthread_mutex_unlock(®istry->_lock); error_rcu_unlock: rcu_read_unlock(); free(sig); @@ -6700,7 +6697,7 @@ static int add_enum_ust_registry(int sock, int sobjd, char *name, int ret = 0, ret_code; struct ust_app *app; struct ust_app_session *ua_sess; - struct ust_registry_session *registry; + ust_registry_session *registry; uint64_t enum_id = -1ULL; rcu_read_lock(); @@ -6732,7 +6729,7 @@ static int add_enum_ust_registry(int sock, int sobjd, char *name, goto error_rcu_unlock; } - pthread_mutex_lock(®istry->lock); + pthread_mutex_lock(®istry->_lock); /* * From this point on, the callee acquires the ownership of @@ -6770,7 +6767,7 @@ static int add_enum_ust_registry(int sock, int sobjd, char *name, DBG3("UST registry enum %s added successfully or already found", name); error: - pthread_mutex_unlock(®istry->lock); + pthread_mutex_unlock(®istry->_lock); error_rcu_unlock: rcu_read_unlock(); return ret; @@ -6944,7 +6941,7 @@ void ust_app_notify_sock_unregister(int sock) rcu_read_lock(); - obj = (ust_app_notify_sock_obj *) zmalloc(sizeof(*obj)); + obj = zmalloc(); if (!obj) { /* * An ENOMEM is kind of uncool. If this strikes we continue the @@ -7046,7 +7043,7 @@ enum lttng_error_code ust_app_snapshot_record( char pathname[PATH_MAX]; size_t consumer_path_offset = 0; - if (!reg->registry->reg.ust->metadata_key) { + if (!reg->registry->reg.ust->_metadata_key) { /* Skip since no metadata is present */ continue; } @@ -7088,7 +7085,7 @@ enum lttng_error_code ust_app_snapshot_record( } } status = consumer_snapshot_channel(socket, - reg->registry->reg.ust->metadata_key, output, 1, + reg->registry->reg.ust->_metadata_key, output, 1, &trace_path[consumer_path_offset], 0); if (status != LTTNG_OK) { goto error; @@ -7103,7 +7100,7 @@ enum lttng_error_code ust_app_snapshot_record( struct lttng_ht_iter chan_iter; struct ust_app_channel *ua_chan; struct ust_app_session *ua_sess; - struct ust_registry_session *registry; + ust_registry_session *registry; char pathname[PATH_MAX]; size_t consumer_path_offset = 0; @@ -7160,7 +7157,7 @@ enum lttng_error_code ust_app_snapshot_record( continue; } status = consumer_snapshot_channel(socket, - registry->metadata_key, output, 1, + registry->_metadata_key, output, 1, &trace_path[consumer_path_offset], 0); switch (status) { case LTTNG_OK: @@ -7470,7 +7467,7 @@ enum lttng_error_code ust_app_rotate_session(struct ltt_session *session) * operations (i.e add context) and lead to data * channels created with no metadata channel. */ - if (!reg->registry->reg.ust->metadata_key) { + if (!reg->registry->reg.ust->_metadata_key) { /* Skip since no metadata is present. */ continue; } @@ -7478,7 +7475,7 @@ enum lttng_error_code ust_app_rotate_session(struct ltt_session *session) (void) push_metadata(reg->registry->reg.ust, usess->consumer); ret = consumer_rotate_channel(socket, - reg->registry->reg.ust->metadata_key, + reg->registry->reg.ust->_metadata_key, usess->consumer, /* is_metadata_channel */ true); if (ret < 0) { @@ -7495,7 +7492,7 @@ enum lttng_error_code ust_app_rotate_session(struct ltt_session *session) struct lttng_ht_iter chan_iter; struct ust_app_channel *ua_chan; struct ust_app_session *ua_sess; - struct ust_registry_session *registry; + ust_registry_session *registry; ua_sess = lookup_session_by_app(usess, app); if (!ua_sess) { @@ -7536,7 +7533,7 @@ enum lttng_error_code ust_app_rotate_session(struct ltt_session *session) /* Rotate the metadata channel. */ (void) push_metadata(registry, usess->consumer); ret = consumer_rotate_channel(socket, - registry->metadata_key, + registry->_metadata_key, ua_sess->consumer, /* is_metadata_channel */ true); if (ret < 0) { @@ -7621,7 +7618,7 @@ enum lttng_error_code ust_app_create_channel_subdirectories( cds_lfht_for_each_entry(ust_app_ht->ht, &iter.iter, app, pid_n.node) { struct ust_app_session *ua_sess; - struct ust_registry_session *registry; + ust_registry_session *registry; ua_sess = lookup_session_by_app(usess, app); if (!ua_sess) { @@ -7726,7 +7723,7 @@ enum lttng_error_code ust_app_clear_session(struct ltt_session *session) * perform a rotation operation on it behind the scene. */ ret = consumer_clear_channel(socket, - reg->registry->reg.ust->metadata_key); + reg->registry->reg.ust->_metadata_key); if (ret < 0) { goto error; } @@ -7740,7 +7737,7 @@ enum lttng_error_code ust_app_clear_session(struct ltt_session *session) struct lttng_ht_iter chan_iter; struct ust_app_channel *ua_chan; struct ust_app_session *ua_sess; - struct ust_registry_session *registry; + ust_registry_session *registry; ua_sess = lookup_session_by_app(usess, app); if (!ua_sess) { @@ -7782,7 +7779,7 @@ enum lttng_error_code ust_app_clear_session(struct ltt_session *session) * Metadata channel is not cleared per se but we still need to * perform rotation operation on it behind the scene. */ - ret = consumer_clear_channel(socket, registry->metadata_key); + ret = consumer_clear_channel(socket, registry->_metadata_key); if (ret < 0) { /* Per-PID buffer and application going away. */ if (ret == -LTTNG_ERR_CHAN_NOT_FOUND) { @@ -7884,7 +7881,7 @@ enum lttng_error_code ust_app_open_packets(struct ltt_session *session) struct lttng_ht_iter chan_iter; struct ust_app_channel *ua_chan; struct ust_app_session *ua_sess; - struct ust_registry_session *registry; + ust_registry_session *registry; ua_sess = lookup_session_by_app(usess, app); if (!ua_sess) {