Propagate trace format all the way to the consumer
[lttng-tools.git] / src / common / kernel-consumer / kernel-consumer.cpp
index 52266f9eb2a5f18971acbd0b531f8ff4b0c0851e..4bb2681af603856fc3bfd39dc84e3763116846c4 100644 (file)
 #include <sys/stat.h>
 #include <stdint.h>
 
-#include <bin/lttng-consumerd/health-consumerd.h>
-#include <common/common.h>
-#include <common/kernel-ctl/kernel-ctl.h>
-#include <common/sessiond-comm/sessiond-comm.h>
-#include <common/sessiond-comm/relayd.h>
-#include <common/compat/fcntl.h>
-#include <common/compat/endian.h>
-#include <common/pipe.h>
-#include <common/relayd/relayd.h>
-#include <common/utils.h>
-#include <common/consumer/consumer-stream.h>
-#include <common/index/index.h>
-#include <common/consumer/consumer-timer.h>
-#include <common/optional.h>
-#include <common/buffer-view.h>
-#include <common/consumer/consumer.h>
-#include <common/consumer/metadata-bucket.h>
-
-#include "kernel-consumer.h"
+#include <bin/lttng-consumerd/health-consumerd.hpp>
+#include <common/common.hpp>
+#include <common/kernel-ctl/kernel-ctl.hpp>
+#include <common/sessiond-comm/sessiond-comm.hpp>
+#include <common/sessiond-comm/relayd.hpp>
+#include <common/compat/fcntl.hpp>
+#include <common/compat/endian.hpp>
+#include <common/pipe.hpp>
+#include <common/relayd/relayd.hpp>
+#include <common/utils.hpp>
+#include <common/consumer/consumer-stream.hpp>
+#include <common/index/index.hpp>
+#include <common/consumer/consumer-timer.hpp>
+#include <common/optional.hpp>
+#include <common/buffer-view.hpp>
+#include <common/consumer/consumer.hpp>
+#include <common/consumer/metadata-bucket.hpp>
+
+#include "kernel-consumer.hpp"
 
 extern struct lttng_consumer_global_data the_consumer_data;
 extern int consumer_poll_timeout;
@@ -145,8 +145,7 @@ error:
 static int lttng_kconsumer_snapshot_channel(
                struct lttng_consumer_channel *channel,
                uint64_t key, char *path, uint64_t relayd_id,
-               uint64_t nb_packets_per_stream,
-               struct lttng_consumer_local_data *ctx)
+               uint64_t nb_packets_per_stream)
 {
        int ret;
        struct lttng_consumer_stream *stream;
@@ -435,7 +434,6 @@ static int lttng_kconsumer_snapshot_metadata(
        ret = 0;
 error_snapshot:
        metadata_stream->read_subbuffer_ops.unlock(metadata_stream);
-       cds_list_del(&metadata_stream->send_node);
        consumer_stream_destroy(metadata_stream, NULL);
        metadata_channel->metadata_stream = NULL;
        rcu_read_unlock();
@@ -516,17 +514,12 @@ int lttng_kconsumer_recv_cmd(struct lttng_consumer_local_data *ctx,
                DBG("consumer_add_channel %" PRIu64, msg.u.channel.channel_key);
                new_channel = consumer_allocate_channel(msg.u.channel.channel_key,
                                msg.u.channel.session_id,
-                               msg.u.channel.chunk_id.is_set ?
-                                               &chunk_id : NULL,
-                               msg.u.channel.pathname,
-                               msg.u.channel.name,
-                               msg.u.channel.relayd_id, msg.u.channel.output,
-                               msg.u.channel.tracefile_size,
-                               msg.u.channel.tracefile_count, 0,
-                               msg.u.channel.monitor,
-                               msg.u.channel.live_timer_interval,
-                               msg.u.channel.is_live,
-                               NULL, NULL);
+                               msg.u.channel.chunk_id.is_set ? &chunk_id : NULL,
+                               msg.u.channel.pathname, msg.u.channel.name, msg.u.channel.relayd_id,
+                               msg.u.channel.output, msg.u.channel.tracefile_size,
+                               msg.u.channel.tracefile_count, 0, msg.u.channel.monitor,
+                               msg.u.channel.live_timer_interval, msg.u.channel.is_live, NULL,
+                               NULL, msg.u.channel.trace_format);
                if (new_channel == NULL) {
                        lttng_consumer_send_error(ctx, LTTCOMM_CONSUMERD_OUTFD_ERROR);
                        goto end_nosignal;
@@ -674,18 +667,10 @@ int lttng_kconsumer_recv_cmd(struct lttng_consumer_local_data *ctx,
                health_code_update();
 
                pthread_mutex_lock(&channel->lock);
-               new_stream = consumer_stream_create(
-                               channel,
-                               channel->key,
-                               fd,
-                               channel->name,
-                               channel->relayd_id,
-                               channel->session_id,
-                               channel->trace_chunk,
-                               msg.u.stream.cpu,
-                               &alloc_ret,
-                               channel->type,
-                               channel->monitor);
+               new_stream = consumer_stream_create(channel, channel->key, fd, channel->name,
+                               channel->relayd_id, channel->session_id, channel->trace_chunk,
+                               msg.u.stream.cpu, &alloc_ret, channel->type, channel->monitor,
+                               channel->trace_format);
                if (new_stream == NULL) {
                        switch (alloc_ret) {
                        case -ENOMEM:
@@ -990,8 +975,7 @@ error_streams_sent_nosignal:
                                                msg.u.snapshot_channel.pathname,
                                                msg.u.snapshot_channel.relayd_id,
                                                msg.u.snapshot_channel
-                                                               .nb_packets_per_stream,
-                                               ctx);
+                                                               .nb_packets_per_stream);
                                if (ret_snapshot < 0) {
                                        ERR("Snapshot channel failed");
                                        ret_code = LTTCOMM_CONSUMERD_SNAPSHOT_FAILED;
@@ -1185,8 +1169,7 @@ end_destroy_channel:
 
                        ret_rotate_channel = lttng_consumer_rotate_channel(
                                        channel, key,
-                                       msg.u.rotate_channel.relayd_id,
-                                       msg.u.rotate_channel.metadata, ctx);
+                                       msg.u.rotate_channel.relayd_id);
                        if (ret_rotate_channel < 0) {
                                ERR("Rotate channel failed");
                                ret_code = LTTCOMM_CONSUMERD_ROTATION_FAIL;
@@ -1205,7 +1188,7 @@ end_destroy_channel:
                        int ret_rotate;
 
                        ret_rotate = lttng_consumer_rotate_ready_streams(
-                                       channel, key, ctx);
+                                       channel, key);
                        if (ret_rotate < 0) {
                                ERR("Rotate ready streams failed");
                        }
@@ -1248,9 +1231,13 @@ error_rotate_channel:
        case LTTNG_CONSUMER_INIT:
        {
                int ret_send_status;
+               lttng_uuid sessiond_uuid;
+
+               std::copy(std::begin(msg.u.init.sessiond_uuid), std::end(msg.u.init.sessiond_uuid),
+                               sessiond_uuid.begin());
 
                ret_code = lttng_consumer_init_command(ctx,
-                               msg.u.init.sessiond_uuid);
+                               sessiond_uuid);
                health_code_update();
                ret_send_status = consumer_send_status_msg(sock, ret_code);
                if (ret_send_status < 0) {
@@ -1735,7 +1722,7 @@ end:
 
 static
 int put_next_subbuffer(struct lttng_consumer_stream *stream,
-               struct stream_subbuffer *subbuffer)
+               struct stream_subbuffer *subbuffer __attribute__((unused)))
 {
        const int ret = kernctl_put_next_subbuf(stream->wait_fd);
 
@@ -1767,7 +1754,7 @@ bool is_get_next_check_metadata_available(int tracer_fd)
 
 static
 int signal_metadata(struct lttng_consumer_stream *stream,
-               struct lttng_consumer_local_data *ctx)
+               struct lttng_consumer_local_data *ctx __attribute__((unused)))
 {
        ASSERT_LOCKED(stream->metadata_rdv_lock);
        return pthread_cond_broadcast(&stream->metadata_rdv) ? -errno : 0;
This page took 0.029195 seconds and 5 git commands to generate.