X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Fconsumer.c;h=f2ccf9536b147b72574638046135da3e425b771a;hp=1cb1c47431303e6ed3c516948a78b5807855c48c;hb=b83e03c49920557f292d3861f42d0109e6fa03ea;hpb=d7ba13889c8692b14f99238ddf2721ed78df89d2 diff --git a/src/common/consumer.c b/src/common/consumer.c index 1cb1c4743..f2ccf9536 100644 --- a/src/common/consumer.c +++ b/src/common/consumer.c @@ -286,6 +286,17 @@ static void free_channel_rcu(struct rcu_head *head) struct lttng_consumer_channel *channel = caa_container_of(node, struct lttng_consumer_channel, node); + switch (consumer_data.type) { + case LTTNG_CONSUMER_KERNEL: + break; + case LTTNG_CONSUMER32_UST: + case LTTNG_CONSUMER64_UST: + lttng_ustconsumer_free_channel(channel); + break; + default: + ERR("Unknown consumer_data type"); + abort(); + } free(channel); } @@ -563,6 +574,7 @@ struct lttng_consumer_stream *consumer_allocate_stream(uint64_t channel_key, stream->endpoint_status = CONSUMER_ENDPOINT_ACTIVE; stream->index_fd = -1; pthread_mutex_init(&stream->lock, NULL); + pthread_mutex_init(&stream->metadata_timer_lock, NULL); /* If channel is the metadata, flag this stream as metadata. */ if (type == CONSUMER_CHANNEL_TYPE_METADATA) { @@ -937,6 +949,7 @@ struct lttng_consumer_channel *consumer_allocate_channel(uint64_t key, uint64_t session_id_per_pid, unsigned int monitor, unsigned int live_timer_interval, + const char *root_shm_path, const char *shm_path) { struct lttng_consumer_channel *channel; @@ -994,6 +1007,10 @@ struct lttng_consumer_channel *consumer_allocate_channel(uint64_t key, strncpy(channel->name, name, sizeof(channel->name)); channel->name[sizeof(channel->name) - 1] = '\0'; + if (root_shm_path) { + strncpy(channel->root_shm_path, root_shm_path, sizeof(channel->root_shm_path)); + channel->root_shm_path[sizeof(channel->root_shm_path) - 1] = '\0'; + } if (shm_path) { strncpy(channel->shm_path, shm_path, sizeof(channel->shm_path)); channel->shm_path[sizeof(channel->shm_path) - 1] = '\0';