common: replace container_of with a C++ safe implementation
[lttng-tools.git] / src / common / event-rule / user-tracepoint.cpp
index cc76d229dba4872eb92409e468fd7e054d1e890f..318bc21c805281bbd3fc46f38501be1e8a2e6704 100644 (file)
@@ -5,19 +5,19 @@
  *
  */
 
-#include <common/credentials.h>
-#include <common/error.h>
-#include <common/hashtable/hashtable.h>
-#include <common/hashtable/utils.h>
-#include <common/macros.h>
-#include <common/mi-lttng.h>
-#include <common/optional.h>
-#include <common/payload-view.h>
-#include <common/payload.h>
-#include <common/runas.h>
-#include <common/string-utils/string-utils.h>
-#include <lttng/event-rule/event-rule-internal.h>
-#include <lttng/event-rule/user-tracepoint-internal.h>
+#include <common/credentials.hpp>
+#include <common/error.hpp>
+#include <common/hashtable/hashtable.hpp>
+#include <common/hashtable/utils.hpp>
+#include <common/macros.hpp>
+#include <common/mi-lttng.hpp>
+#include <common/optional.hpp>
+#include <common/payload-view.hpp>
+#include <common/payload.hpp>
+#include <common/runas.hpp>
+#include <common/string-utils/string-utils.hpp>
+#include <lttng/event-rule/event-rule-internal.hpp>
+#include <lttng/event-rule/user-tracepoint-internal.hpp>
 #include <lttng/event.h>
 #include <lttng/log-level-rule.h>
 
@@ -32,8 +32,8 @@ static void lttng_event_rule_user_tracepoint_destroy(struct lttng_event_rule *ru
                return;
        }
 
-       tracepoint = container_of(
-                       rule, struct lttng_event_rule_user_tracepoint, parent);
+       tracepoint = lttng::utils::container_of(
+                       rule, &lttng_event_rule_user_tracepoint::parent);
 
        lttng_log_level_rule_destroy(tracepoint->log_level_rule);
        lttng_dynamic_pointer_array_reset(&tracepoint->exclusions);
@@ -54,8 +54,8 @@ static bool lttng_event_rule_user_tracepoint_validate(
                goto end;
        }
 
-       tracepoint = container_of(
-                       rule, struct lttng_event_rule_user_tracepoint, parent);
+       tracepoint = lttng::utils::container_of(
+                       rule, &lttng_event_rule_user_tracepoint::parent);
 
        /* Required field. */
        if (!tracepoint->pattern) {
@@ -90,8 +90,8 @@ static int lttng_event_rule_user_tracepoint_serialize(
        header_offset = payload->buffer.size;
 
        DBG("Serializing user tracepoint event rule.");
-       tracepoint = container_of(
-                       rule, struct lttng_event_rule_user_tracepoint, parent);
+       tracepoint = lttng::utils::container_of(
+                       rule, &lttng_event_rule_user_tracepoint::parent);
 
        status = lttng_event_rule_user_tracepoint_get_name_pattern_exclusion_count(rule, &exclusion_count);
        LTTNG_ASSERT(status == LTTNG_EVENT_RULE_STATUS_OK);
@@ -197,8 +197,8 @@ static bool lttng_event_rule_user_tracepoint_is_equal(
        unsigned int count_a, count_b;
        enum lttng_event_rule_status status;
 
-       a = container_of(_a, struct lttng_event_rule_user_tracepoint, parent);
-       b = container_of(_b, struct lttng_event_rule_user_tracepoint, parent);
+       a = lttng::utils::container_of(_a, &lttng_event_rule_user_tracepoint::parent);
+       b = lttng::utils::container_of(_b, &lttng_event_rule_user_tracepoint::parent);
 
        status = lttng_event_rule_user_tracepoint_get_name_pattern_exclusion_count(_a, &count_a);
        LTTNG_ASSERT(status == LTTNG_EVENT_RULE_STATUS_OK);
@@ -268,8 +268,8 @@ lttng_event_rule_user_tracepoint_generate_filter_bytecode(
 
        LTTNG_ASSERT(rule);
 
-       tracepoint = container_of(
-                       rule, struct lttng_event_rule_user_tracepoint, parent);
+       tracepoint = lttng::utils::container_of(
+                       rule, &lttng_event_rule_user_tracepoint::parent);
 
        status = lttng_event_rule_user_tracepoint_get_filter(rule, &filter);
        if (status == LTTNG_EVENT_RULE_STATUS_UNSET) {
@@ -323,8 +323,8 @@ static const char *lttng_event_rule_user_tracepoint_get_internal_filter(
        struct lttng_event_rule_user_tracepoint *tracepoint;
 
        LTTNG_ASSERT(rule);
-       tracepoint = container_of(
-                       rule, struct lttng_event_rule_user_tracepoint, parent);
+       tracepoint = lttng::utils::container_of(
+                       rule, &lttng_event_rule_user_tracepoint::parent);
        return tracepoint->internal_filter.filter;
 }
 
@@ -335,8 +335,8 @@ lttng_event_rule_user_tracepoint_get_internal_filter_bytecode(
        struct lttng_event_rule_user_tracepoint *tracepoint;
 
        LTTNG_ASSERT(rule);
-       tracepoint = container_of(
-                       rule, struct lttng_event_rule_user_tracepoint, parent);
+       tracepoint = lttng::utils::container_of(
+                       rule, &lttng_event_rule_user_tracepoint::parent);
        return tracepoint->internal_filter.bytecode;
 }
 
@@ -362,8 +362,7 @@ lttng_event_rule_user_tracepoint_generate_exclusions(
                goto end;
        }
 
-       exclusions = (lttng_event_exclusion *) zmalloc(sizeof(struct lttng_event_exclusion) +
-                       (LTTNG_SYMBOL_NAME_LEN * nb_exclusions));
+       exclusions = zmalloc<lttng_event_exclusion>(sizeof(struct lttng_event_exclusion) + (LTTNG_SYMBOL_NAME_LEN * nb_exclusions));
        if (!exclusions) {
                PERROR("Failed to allocate exclusions buffer");
                ret_status = LTTNG_EVENT_RULE_GENERATE_EXCLUSIONS_STATUS_OUT_OF_MEMORY;
@@ -380,8 +379,10 @@ lttng_event_rule_user_tracepoint_generate_exclusions(
                                                rule, i, &exclusion_str);
                LTTNG_ASSERT(event_rule_status == LTTNG_EVENT_RULE_STATUS_OK);
 
-               copy_ret = lttng_strncpy(exclusions->names[i], exclusion_str,
-                               sizeof(exclusions->names[i]));
+               copy_ret = lttng_strncpy(
+                               LTTNG_EVENT_EXCLUSION_NAME_AT(exclusions, i),
+                               exclusion_str,
+                               sizeof(LTTNG_EVENT_EXCLUSION_NAME_AT(exclusions, i)));
                if (copy_ret) {
                        free(exclusions);
                        exclusions = NULL;
@@ -409,7 +410,7 @@ static unsigned long lttng_event_rule_user_tracepoint_hash(
        unsigned int i, exclusion_count;
        enum lttng_event_rule_status status;
        struct lttng_event_rule_user_tracepoint *tp_rule =
-                       container_of(rule, typeof(*tp_rule), parent);
+                       lttng::utils::container_of(rule, &lttng_event_rule_user_tracepoint::parent);
 
        hash = hash_key_ulong((void *) LTTNG_EVENT_RULE_TYPE_USER_TRACEPOINT,
                        lttng_ht_seed);
@@ -558,7 +559,7 @@ struct lttng_event_rule *lttng_event_rule_user_tracepoint_create(void)
        struct lttng_event_rule_user_tracepoint *tp_rule;
        enum lttng_event_rule_status status;
 
-       tp_rule = (lttng_event_rule_user_tracepoint *) zmalloc(sizeof(struct lttng_event_rule_user_tracepoint));
+       tp_rule = zmalloc<lttng_event_rule_user_tracepoint>();
        if (!tp_rule) {
                goto end;
        }
@@ -795,8 +796,8 @@ enum lttng_event_rule_status lttng_event_rule_user_tracepoint_set_name_pattern(
                goto end;
        }
 
-       tracepoint = container_of(
-                       rule, struct lttng_event_rule_user_tracepoint, parent);
+       tracepoint = lttng::utils::container_of(
+                       rule, &lttng_event_rule_user_tracepoint::parent);
        pattern_copy = strdup(pattern);
        if (!pattern_copy) {
                status = LTTNG_EVENT_RULE_STATUS_ERROR;
@@ -825,8 +826,8 @@ enum lttng_event_rule_status lttng_event_rule_user_tracepoint_get_name_pattern(
                goto end;
        }
 
-       tracepoint = container_of(
-                       rule, struct lttng_event_rule_user_tracepoint, parent);
+       tracepoint = lttng::utils::container_of(
+                       rule, &lttng_event_rule_user_tracepoint::parent);
        if (!tracepoint->pattern) {
                status = LTTNG_EVENT_RULE_STATUS_UNSET;
                goto end;
@@ -850,8 +851,8 @@ enum lttng_event_rule_status lttng_event_rule_user_tracepoint_set_filter(
                goto end;
        }
 
-       tracepoint = container_of(
-                       rule, struct lttng_event_rule_user_tracepoint, parent);
+       tracepoint = lttng::utils::container_of(
+                       rule, &lttng_event_rule_user_tracepoint::parent);
        expression_copy = strdup(expression);
        if (!expression_copy) {
                PERROR("Failed to copy filter expression");
@@ -880,8 +881,8 @@ enum lttng_event_rule_status lttng_event_rule_user_tracepoint_get_filter(
                goto end;
        }
 
-       tracepoint = container_of(
-                       rule, struct lttng_event_rule_user_tracepoint, parent);
+       tracepoint = lttng::utils::container_of(
+                       rule, &lttng_event_rule_user_tracepoint::parent);
        if (!tracepoint->filter_expression) {
                status = LTTNG_EVENT_RULE_STATUS_UNSET;
                goto end;
@@ -940,8 +941,8 @@ enum lttng_event_rule_status lttng_event_rule_user_tracepoint_set_log_level_rule
                goto end;
        }
 
-       tracepoint = container_of(
-                       rule, struct lttng_event_rule_user_tracepoint, parent);
+       tracepoint = lttng::utils::container_of(
+                       rule, &lttng_event_rule_user_tracepoint::parent);
 
        if (!log_level_rule_valid(log_level_rule)) {
                status = LTTNG_EVENT_RULE_STATUS_INVALID;
@@ -977,8 +978,8 @@ enum lttng_event_rule_status lttng_event_rule_user_tracepoint_get_log_level_rule
                goto end;
        }
 
-       tracepoint = container_of(
-                       rule, struct lttng_event_rule_user_tracepoint, parent);
+       tracepoint = lttng::utils::container_of(
+                       rule, &lttng_event_rule_user_tracepoint::parent);
        if (tracepoint->log_level_rule == NULL) {
                status = LTTNG_EVENT_RULE_STATUS_UNSET;
                goto end;
@@ -1004,8 +1005,8 @@ enum lttng_event_rule_status lttng_event_rule_user_tracepoint_add_name_pattern_e
                goto end;
        }
 
-       tracepoint = container_of(
-                       rule, struct lttng_event_rule_user_tracepoint, parent);
+       tracepoint = lttng::utils::container_of(
+                       rule, &lttng_event_rule_user_tracepoint::parent);
 
        if (strlen(exclusion) >= LTTNG_SYMBOL_NAME_LEN) {
                status = LTTNG_EVENT_RULE_STATUS_INVALID;
@@ -1042,8 +1043,8 @@ enum lttng_event_rule_status lttng_event_rule_user_tracepoint_get_name_pattern_e
                goto end;
        }
 
-       tracepoint = container_of(
-                       rule, struct lttng_event_rule_user_tracepoint, parent);
+       tracepoint = lttng::utils::container_of(
+                       rule, &lttng_event_rule_user_tracepoint::parent);
        *count = lttng_dynamic_pointer_array_get_count(&tracepoint->exclusions);
 end:
        return status;
@@ -1063,8 +1064,8 @@ enum lttng_event_rule_status lttng_event_rule_user_tracepoint_get_name_pattern_e
                goto end;
        }
 
-       tracepoint = container_of(
-                       rule, struct lttng_event_rule_user_tracepoint, parent);
+       tracepoint = lttng::utils::container_of(
+                       rule, &lttng_event_rule_user_tracepoint::parent);
        if (lttng_event_rule_user_tracepoint_get_name_pattern_exclusion_count(rule, &count) !=
                        LTTNG_EVENT_RULE_STATUS_OK) {
                goto end;
This page took 0.029478 seconds and 4 git commands to generate.