Clean-up: modernize pretty_xml.cpp
[lttng-tools.git] / src / bin / lttng-sessiond / channel.cpp
index e3bb232fa155d32d9620c07c0a0c87bc406e0b85..4e5401295ed43f9d36d87b2e29a78b4f2ca52b72 100644 (file)
@@ -7,40 +7,39 @@
  */
 
 #define _LGPL_SOURCE
-#include <inttypes.h>
-#include <string.h>
-#include <unistd.h>
-
-#include <common/common.hpp>
-#include <common/defaults.hpp>
-#include <common/sessiond-comm/sessiond-comm.hpp>
-
+#include "agent.hpp"
 #include "channel.hpp"
-#include "lttng-sessiond.hpp"
 #include "kernel.hpp"
+#include "lttng-sessiond.hpp"
 #include "lttng-ust-ctl.hpp"
 #include "lttng-ust-error.hpp"
-#include "utils.hpp"
 #include "ust-app.hpp"
-#include "agent.hpp"
+#include "utils.hpp"
+
+#include <common/common.hpp>
+#include <common/defaults.hpp>
+#include <common/sessiond-comm/sessiond-comm.hpp>
+
+#include <inttypes.h>
+#include <string.h>
+#include <unistd.h>
 
 /*
  * Return allocated channel attributes.
  */
-struct lttng_channel *channel_new_default_attr(int dom,
-               enum lttng_buffer_type type)
+struct lttng_channel *channel_new_default_attr(int dom, enum lttng_buffer_type type)
 {
        struct lttng_channel *chan;
        const char *channel_name = DEFAULT_CHANNEL_NAME;
-       struct lttng_channel_extended *extended_attr = NULL;
+       struct lttng_channel_extended *extended_attr = nullptr;
 
-       chan = (lttng_channel *) zmalloc(sizeof(struct lttng_channel));
-       if (chan == NULL) {
+       chan = zmalloc<lttng_channel>();
+       if (chan == nullptr) {
                PERROR("zmalloc channel init");
                goto error_alloc;
        }
 
-       extended_attr = (lttng_channel_extended *) zmalloc(sizeof(struct lttng_channel_extended));
+       extended_attr = zmalloc<lttng_channel_extended>();
        if (!extended_attr) {
                PERROR("zmalloc channel extended init");
                goto error;
@@ -56,16 +55,14 @@ struct lttng_channel *channel_new_default_attr(int dom,
        switch (dom) {
        case LTTNG_DOMAIN_KERNEL:
                LTTNG_ASSERT(type == LTTNG_BUFFER_GLOBAL);
-               chan->attr.subbuf_size =
-                       default_get_kernel_channel_subbuf_size();
+               chan->attr.subbuf_size = default_get_kernel_channel_subbuf_size();
                chan->attr.num_subbuf = DEFAULT_KERNEL_CHANNEL_SUBBUF_NUM;
                chan->attr.output = DEFAULT_KERNEL_CHANNEL_OUTPUT;
                chan->attr.switch_timer_interval = DEFAULT_KERNEL_CHANNEL_SWITCH_TIMER;
                chan->attr.read_timer_interval = DEFAULT_KERNEL_CHANNEL_READ_TIMER;
                chan->attr.live_timer_interval = DEFAULT_KERNEL_CHANNEL_LIVE_TIMER;
                extended_attr->blocking_timeout = DEFAULT_KERNEL_CHANNEL_BLOCKING_TIMEOUT;
-               extended_attr->monitor_timer_interval =
-                       DEFAULT_KERNEL_CHANNEL_MONITOR_TIMER;
+               extended_attr->monitor_timer_interval = DEFAULT_KERNEL_CHANNEL_MONITOR_TIMER;
                break;
        case LTTNG_DOMAIN_JUL:
                channel_name = DEFAULT_JUL_CHANNEL_NAME;
@@ -77,18 +74,15 @@ struct lttng_channel *channel_new_default_attr(int dom,
                channel_name = DEFAULT_PYTHON_CHANNEL_NAME;
                goto common_ust;
        case LTTNG_DOMAIN_UST:
-common_ust:
+       common_ust:
                switch (type) {
                case LTTNG_BUFFER_PER_UID:
                        chan->attr.subbuf_size = default_get_ust_uid_channel_subbuf_size();
                        chan->attr.num_subbuf = DEFAULT_UST_UID_CHANNEL_SUBBUF_NUM;
                        chan->attr.output = DEFAULT_UST_UID_CHANNEL_OUTPUT;
-                       chan->attr.switch_timer_interval =
-                               DEFAULT_UST_UID_CHANNEL_SWITCH_TIMER;
-                       chan->attr.read_timer_interval =
-                               DEFAULT_UST_UID_CHANNEL_READ_TIMER;
-                       chan->attr.live_timer_interval =
-                               DEFAULT_UST_UID_CHANNEL_LIVE_TIMER;
+                       chan->attr.switch_timer_interval = DEFAULT_UST_UID_CHANNEL_SWITCH_TIMER;
+                       chan->attr.read_timer_interval = DEFAULT_UST_UID_CHANNEL_READ_TIMER;
+                       chan->attr.live_timer_interval = DEFAULT_UST_UID_CHANNEL_LIVE_TIMER;
                        extended_attr->blocking_timeout = DEFAULT_UST_UID_CHANNEL_BLOCKING_TIMEOUT;
                        extended_attr->monitor_timer_interval =
                                DEFAULT_UST_UID_CHANNEL_MONITOR_TIMER;
@@ -98,12 +92,9 @@ common_ust:
                        chan->attr.subbuf_size = default_get_ust_pid_channel_subbuf_size();
                        chan->attr.num_subbuf = DEFAULT_UST_PID_CHANNEL_SUBBUF_NUM;
                        chan->attr.output = DEFAULT_UST_PID_CHANNEL_OUTPUT;
-                       chan->attr.switch_timer_interval =
-                               DEFAULT_UST_PID_CHANNEL_SWITCH_TIMER;
-                       chan->attr.read_timer_interval =
-                               DEFAULT_UST_PID_CHANNEL_READ_TIMER;
-                       chan->attr.live_timer_interval =
-                               DEFAULT_UST_PID_CHANNEL_LIVE_TIMER;
+                       chan->attr.switch_timer_interval = DEFAULT_UST_PID_CHANNEL_SWITCH_TIMER;
+                       chan->attr.read_timer_interval = DEFAULT_UST_PID_CHANNEL_READ_TIMER;
+                       chan->attr.live_timer_interval = DEFAULT_UST_PID_CHANNEL_LIVE_TIMER;
                        extended_attr->blocking_timeout = DEFAULT_UST_PID_CHANNEL_BLOCKING_TIMEOUT;
                        extended_attr->monitor_timer_interval =
                                DEFAULT_UST_PID_CHANNEL_MONITOR_TIMER;
@@ -111,11 +102,10 @@ common_ust:
                }
                break;
        default:
-               goto error;     /* Not implemented */
+               goto error; /* Not implemented */
        }
 
-       if (snprintf(chan->name, sizeof(chan->name), "%s",
-                       channel_name) < 0) {
+       if (snprintf(chan->name, sizeof(chan->name), "%s", channel_name) < 0) {
                PERROR("snprintf default channel name");
                goto error;
        }
@@ -125,7 +115,7 @@ error:
        free(extended_attr);
        free(chan);
 error_alloc:
-       return NULL;
+       return nullptr;
 }
 
 void channel_attr_destroy(struct lttng_channel *channel)
@@ -140,8 +130,7 @@ void channel_attr_destroy(struct lttng_channel *channel)
 /*
  * Disable kernel channel of the kernel session.
  */
-int channel_kernel_disable(struct ltt_kernel_session *ksession,
-               char *channel_name)
+int channel_kernel_disable(struct ltt_kernel_session *ksession, char *channel_name)
 {
        int ret;
        struct ltt_kernel_channel *kchan;
@@ -150,13 +139,13 @@ int channel_kernel_disable(struct ltt_kernel_session *ksession,
        LTTNG_ASSERT(channel_name);
 
        kchan = trace_kernel_get_channel_by_name(channel_name, ksession);
-       if (kchan == NULL) {
+       if (kchan == nullptr) {
                ret = LTTNG_ERR_KERN_CHAN_NOT_FOUND;
                goto error;
        }
 
        /* Only if channel is enabled disable it. */
-       if (kchan->enabled == 1) {
+       if (kchan->enabled) {
                ret = kernel_disable_channel(kchan);
                if (ret < 0 && ret != -EEXIST) {
                        ret = LTTNG_ERR_KERN_CHAN_DISABLE_FAIL;
@@ -174,14 +163,14 @@ error:
  * Enable kernel channel of the kernel session.
  */
 enum lttng_error_code channel_kernel_enable(struct ltt_kernel_session *ksession,
-               struct ltt_kernel_channel *kchan)
+                                           struct ltt_kernel_channel *kchan)
 {
        enum lttng_error_code ret_code;
 
        LTTNG_ASSERT(ksession);
        LTTNG_ASSERT(kchan);
 
-       if (kchan->enabled == 0) {
+       if (!kchan->enabled) {
                if (kernel_enable_channel(kchan) < 0) {
                        ret_code = LTTNG_ERR_KERN_CHAN_ENABLE_FAIL;
                        goto error;
@@ -213,7 +202,7 @@ static int channel_validate(struct lttng_channel *attr)
 static int channel_validate_kernel(struct lttng_channel *attr)
 {
        /* Kernel channels do not support blocking timeout. */
-       if (((struct lttng_channel_extended *)attr->attr.extended.ptr)->blocking_timeout) {
+       if (((struct lttng_channel_extended *) attr->attr.extended.ptr)->blocking_timeout) {
                return -1;
        }
        return 0;
@@ -223,18 +212,18 @@ static int channel_validate_kernel(struct lttng_channel *attr)
  * Create kernel channel of the kernel session and notify kernel thread.
  */
 enum lttng_error_code channel_kernel_create(struct ltt_kernel_session *ksession,
-               struct lttng_channel *attr, int kernel_pipe)
+                                           struct lttng_channel *attr,
+                                           int kernel_pipe)
 {
        enum lttng_error_code ret_code;
-       struct lttng_channel *defattr = NULL;
+       struct lttng_channel *defattr = nullptr;
 
        LTTNG_ASSERT(ksession);
 
        /* Creating channel attributes if needed */
-       if (attr == NULL) {
-               defattr = channel_new_default_attr(LTTNG_DOMAIN_KERNEL,
-                               LTTNG_BUFFER_GLOBAL);
-               if (defattr == NULL) {
+       if (attr == nullptr) {
+               defattr = channel_new_default_attr(LTTNG_DOMAIN_KERNEL, LTTNG_BUFFER_GLOBAL);
+               if (defattr == nullptr) {
                        ret_code = LTTNG_ERR_FATAL;
                        goto error;
                }
@@ -282,7 +271,7 @@ error:
  * Enable UST channel for session and domain.
  */
 enum lttng_error_code channel_ust_enable(struct ltt_ust_session *usess,
-               struct ltt_ust_channel *uchan)
+                                        struct ltt_ust_channel *uchan)
 {
        enum lttng_error_code ret_code = LTTNG_OK;
 
@@ -295,7 +284,7 @@ enum lttng_error_code channel_ust_enable(struct ltt_ust_session *usess,
                ret_code = LTTNG_ERR_UST_CHAN_EXIST;
                goto end;
        } else {
-               uchan->enabled = 1;
+               uchan->enabled = true;
                DBG2("Channel %s enabled successfully", uchan->name);
        }
 
@@ -320,7 +309,6 @@ enum lttng_error_code channel_ust_enable(struct ltt_ust_session *usess,
         */
        (void) ust_app_enable_channel_glb(usess, uchan);
 
-
 end:
        return ret_code;
 }
@@ -329,20 +317,22 @@ end:
  * Create UST channel for session and domain.
  */
 enum lttng_error_code channel_ust_create(struct ltt_ust_session *usess,
-               struct lttng_channel *attr, enum lttng_buffer_type type)
+                                        struct lttng_channel *attr,
+                                        enum lttng_buffer_type type)
 {
        enum lttng_error_code ret_code = LTTNG_OK;
-       struct ltt_ust_channel *uchan = NULL;
-       struct lttng_channel *defattr = NULL;
+       struct ltt_ust_channel *uchan = nullptr;
+       struct lttng_channel *defattr = nullptr;
        enum lttng_domain_type domain = LTTNG_DOMAIN_UST;
        bool chan_published = false;
+       lttng::urcu::read_lock_guard read_lock;
 
        LTTNG_ASSERT(usess);
 
        /* Creating channel attributes if needed */
-       if (attr == NULL) {
+       if (attr == nullptr) {
                defattr = channel_new_default_attr(LTTNG_DOMAIN_UST, type);
-               if (defattr == NULL) {
+               if (defattr == nullptr) {
                        ret_code = LTTNG_ERR_FATAL;
                        goto error;
                }
@@ -385,8 +375,7 @@ enum lttng_error_code channel_ust_create(struct ltt_ust_session *usess,
         * and nonzero. We validate right here for UST, because applications will
         * not report the error to the user (unlike kernel tracing).
         */
-       if (!attr->attr.subbuf_size ||
-                       (attr->attr.subbuf_size & (attr->attr.subbuf_size - 1))) {
+       if (!attr->attr.subbuf_size || (attr->attr.subbuf_size & (attr->attr.subbuf_size - 1))) {
                ret_code = LTTNG_ERR_INVALID;
                goto error;
        }
@@ -399,8 +388,7 @@ enum lttng_error_code channel_ust_create(struct ltt_ust_session *usess,
                goto error;
        }
 
-       if (!attr->attr.num_subbuf ||
-                       (attr->attr.num_subbuf & (attr->attr.num_subbuf - 1))) {
+       if (!attr->attr.num_subbuf || (attr->attr.num_subbuf & (attr->attr.num_subbuf - 1))) {
                ret_code = LTTNG_ERR_INVALID;
                goto error;
        }
@@ -415,7 +403,7 @@ enum lttng_error_code channel_ust_create(struct ltt_ust_session *usess,
         * we won't be able to write the packets on disk
         */
        if ((attr->attr.tracefile_size > 0) &&
-                       (attr->attr.tracefile_size < attr->attr.subbuf_size)) {
+           (attr->attr.tracefile_size < attr->attr.subbuf_size)) {
                ret_code = LTTNG_ERR_INVALID;
                goto error;
        }
@@ -433,20 +421,23 @@ enum lttng_error_code channel_ust_create(struct ltt_ust_session *usess,
 
        /* Create UST channel */
        uchan = trace_ust_create_channel(attr, domain);
-       if (uchan == NULL) {
+       if (uchan == nullptr) {
                ret_code = LTTNG_ERR_FATAL;
                goto error;
        }
 
-       uchan->enabled = 1;
-       if (trace_ust_is_max_id(usess->used_channel_id)) {
+       uchan->enabled = true;
+       if (trace_ust_is_max_id(usess->used_event_container_id)) {
                ret_code = LTTNG_ERR_UST_CHAN_FAIL;
                goto error;
        }
-       uchan->id = trace_ust_get_next_chan_id(usess);
+
+       uchan->id = trace_ust_get_next_event_container_id(usess);
 
        DBG2("Channel %s is being created for UST with buffer %d and id %" PRIu64,
-                       uchan->name, type, uchan->id);
+            uchan->name,
+            type,
+            uchan->id);
 
        /* Flag session buffer type. */
        if (!usess->buffer_type_changed) {
@@ -459,9 +450,7 @@ enum lttng_error_code channel_ust_create(struct ltt_ust_session *usess,
        }
 
        /* Adding the channel to the channel hash table. */
-       rcu_read_lock();
-       if (strncmp(uchan->name, DEFAULT_METADATA_NAME,
-                               sizeof(uchan->name))) {
+       if (strncmp(uchan->name, DEFAULT_METADATA_NAME, sizeof(uchan->name)) != 0) {
                lttng_ht_add_unique_str(usess->domain_global.channels, &uchan->node);
                chan_published = true;
        } else {
@@ -470,10 +459,8 @@ enum lttng_error_code channel_ust_create(struct ltt_ust_session *usess,
                 * application exists we can access that data in the shadow copy during
                 * the global update of newly registered application.
                 */
-               memcpy(&usess->metadata_attr, &uchan->attr,
-                               sizeof(usess->metadata_attr));
+               memcpy(&usess->metadata_attr, &uchan->attr, sizeof(usess->metadata_attr));
        }
-       rcu_read_unlock();
 
        DBG2("Channel %s created successfully", uchan->name);
        if (domain != LTTNG_DOMAIN_UST) {
@@ -506,8 +493,7 @@ error:
 /*
  * Disable UST channel for session and domain.
  */
-int channel_ust_disable(struct ltt_ust_session *usess,
-               struct ltt_ust_channel *uchan)
+int channel_ust_disable(struct ltt_ust_session *usess, struct ltt_ust_channel *uchan)
 {
        int ret = LTTNG_OK;
 
@@ -515,12 +501,12 @@ int channel_ust_disable(struct ltt_ust_session *usess,
        LTTNG_ASSERT(uchan);
 
        /* Already disabled */
-       if (uchan->enabled == 0) {
+       if (!uchan->enabled) {
                DBG2("Channel UST %s already disabled", uchan->name);
                goto end;
        }
 
-       uchan->enabled = 0;
+       uchan->enabled = false;
 
        /*
         * If session is inactive we don't notify the tracer right away. We
@@ -547,10 +533,9 @@ error:
        return ret;
 }
 
-struct lttng_channel *trace_ust_channel_to_lttng_channel(
-               const struct ltt_ust_channel *uchan)
+struct lttng_channel *trace_ust_channel_to_lttng_channel(const struct ltt_ust_channel *uchan)
 {
-       struct lttng_channel *channel = NULL, *ret = NULL;
+       struct lttng_channel *channel = nullptr, *ret = nullptr;
 
        channel = lttng_channel_create_internal();
        if (!channel) {
@@ -588,13 +573,11 @@ struct lttng_channel *trace_ust_channel_to_lttng_channel(
                break;
        }
 
-       lttng_channel_set_blocking_timeout(
-                       channel, uchan->attr.u.s.blocking_timeout);
-       lttng_channel_set_monitor_timer_interval(
-                       channel, uchan->monitor_timer_interval);
+       lttng_channel_set_blocking_timeout(channel, uchan->attr.u.s.blocking_timeout);
+       lttng_channel_set_monitor_timer_interval(channel, uchan->monitor_timer_interval);
 
        ret = channel;
-       channel = NULL;
+       channel = nullptr;
 
 end:
        lttng_channel_destroy(channel);
This page took 0.033278 seconds and 4 git commands to generate.