common: replace container_of with a C++ safe implementation
[lttng-tools.git] / src / common / event-rule / kernel-syscall.cpp
index 3f8e64ed804cd7ce98b1cd9579cfc10135586a60..633c4698b3558e1b823005f66fb9338de59648bc 100644 (file)
@@ -5,18 +5,18 @@
  *
  */
 
-#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/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/kernel-syscall-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/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/kernel-syscall-internal.hpp>
 
 #define IS_SYSCALL_EVENT_RULE(rule) \
        (lttng_event_rule_get_type(rule) == LTTNG_EVENT_RULE_TYPE_KERNEL_SYSCALL)
@@ -29,7 +29,7 @@ static void lttng_event_rule_kernel_syscall_destroy(struct lttng_event_rule *rul
                return;
        }
 
-       syscall = container_of(rule, struct lttng_event_rule_kernel_syscall, parent);
+       syscall = lttng::utils::container_of(rule, &lttng_event_rule_kernel_syscall::parent);
 
        free(syscall->pattern);
        free(syscall->filter_expression);
@@ -48,7 +48,7 @@ static bool lttng_event_rule_kernel_syscall_validate(
                goto end;
        }
 
-       syscall = container_of(rule, struct lttng_event_rule_kernel_syscall, parent);
+       syscall = lttng::utils::container_of(rule, &lttng_event_rule_kernel_syscall::parent);
 
        /* Required field. */
        if (!syscall->pattern) {
@@ -76,7 +76,7 @@ static int lttng_event_rule_kernel_syscall_serialize(
        }
 
        DBG("Serializing syscall event rule");
-       syscall = container_of(rule, struct lttng_event_rule_kernel_syscall, parent);
+       syscall = lttng::utils::container_of(rule, &lttng_event_rule_kernel_syscall::parent);
 
        pattern_len = strlen(syscall->pattern) + 1;
 
@@ -114,8 +114,8 @@ static bool lttng_event_rule_kernel_syscall_is_equal(const struct lttng_event_ru
        bool is_equal = false;
        struct lttng_event_rule_kernel_syscall *a, *b;
 
-       a = container_of(_a, struct lttng_event_rule_kernel_syscall, parent);
-       b = container_of(_b, struct lttng_event_rule_kernel_syscall, parent);
+       a = lttng::utils::container_of(_a, &lttng_event_rule_kernel_syscall::parent);
+       b = lttng::utils::container_of(_b, &lttng_event_rule_kernel_syscall::parent);
 
        if (!!a->filter_expression != !!b->filter_expression) {
                goto end;
@@ -154,7 +154,7 @@ static enum lttng_error_code lttng_event_rule_kernel_syscall_generate_filter_byt
 
        LTTNG_ASSERT(rule);
 
-       syscall = container_of(rule, struct lttng_event_rule_kernel_syscall, parent);
+       syscall = lttng::utils::container_of(rule, &lttng_event_rule_kernel_syscall::parent);
 
        /* Generate the filter bytecode. */
        status = lttng_event_rule_kernel_syscall_get_filter(rule, &filter);
@@ -202,7 +202,7 @@ static const char *lttng_event_rule_kernel_syscall_get_internal_filter(
        struct lttng_event_rule_kernel_syscall *syscall;
 
        LTTNG_ASSERT(rule);
-       syscall = container_of(rule, struct lttng_event_rule_kernel_syscall, parent);
+       syscall = lttng::utils::container_of(rule, &lttng_event_rule_kernel_syscall::parent);
 
        return syscall->internal_filter.filter;
 }
@@ -214,13 +214,14 @@ lttng_event_rule_kernel_syscall_get_internal_filter_bytecode(
        struct lttng_event_rule_kernel_syscall *syscall;
 
        LTTNG_ASSERT(rule);
-       syscall = container_of(rule, struct lttng_event_rule_kernel_syscall, parent);
+       syscall = lttng::utils::container_of(rule, &lttng_event_rule_kernel_syscall::parent);
 
        return syscall->internal_filter.bytecode;
 }
 
 static enum lttng_event_rule_generate_exclusions_status
-lttng_event_rule_kernel_syscall_generate_exclusions(const struct lttng_event_rule *rule,
+lttng_event_rule_kernel_syscall_generate_exclusions(
+               const struct lttng_event_rule *rule __attribute__((unused)),
                struct lttng_event_exclusion **exclusions)
 {
        /* Unsupported. */
@@ -234,7 +235,7 @@ lttng_event_rule_kernel_syscall_hash(
 {
        unsigned long hash;
        struct lttng_event_rule_kernel_syscall *syscall_rule =
-                       container_of(rule, typeof(*syscall_rule), parent);
+                       lttng::utils::container_of(rule, &lttng_event_rule_kernel_syscall::parent);
 
        hash = hash_key_ulong((void *) LTTNG_EVENT_RULE_TYPE_KERNEL_SYSCALL,
                        lttng_ht_seed);
@@ -355,7 +356,7 @@ struct lttng_event_rule *lttng_event_rule_kernel_syscall_create(
                goto end;
        }
 
-       syscall_rule = (lttng_event_rule_kernel_syscall *) zmalloc(sizeof(struct lttng_event_rule_kernel_syscall));
+       syscall_rule = zmalloc<lttng_event_rule_kernel_syscall>();
        if (!syscall_rule) {
                goto end;
        }
@@ -514,7 +515,7 @@ enum lttng_event_rule_status lttng_event_rule_kernel_syscall_set_name_pattern(
                goto end;
        }
 
-       syscall = container_of(rule, struct lttng_event_rule_kernel_syscall, parent);
+       syscall = lttng::utils::container_of(rule, &lttng_event_rule_kernel_syscall::parent);
        pattern_copy = strdup(pattern);
        if (!pattern_copy) {
                status = LTTNG_EVENT_RULE_STATUS_ERROR;
@@ -542,7 +543,7 @@ enum lttng_event_rule_status lttng_event_rule_kernel_syscall_get_name_pattern(
                goto end;
        }
 
-       syscall = container_of(rule, struct lttng_event_rule_kernel_syscall, parent);
+       syscall = lttng::utils::container_of(rule, &lttng_event_rule_kernel_syscall::parent);
        if (!syscall->pattern) {
                status = LTTNG_EVENT_RULE_STATUS_UNSET;
                goto end;
@@ -568,7 +569,7 @@ enum lttng_event_rule_status lttng_event_rule_kernel_syscall_set_filter(
                goto end;
        }
 
-       syscall = container_of(rule, struct lttng_event_rule_kernel_syscall, parent);
+       syscall = lttng::utils::container_of(rule, &lttng_event_rule_kernel_syscall::parent);
        expression_copy = strdup(expression);
        if (!expression_copy) {
                status = LTTNG_EVENT_RULE_STATUS_ERROR;
@@ -596,7 +597,7 @@ enum lttng_event_rule_status lttng_event_rule_kernel_syscall_get_filter(
                goto end;
        }
 
-       syscall = container_of(rule, struct lttng_event_rule_kernel_syscall, parent);
+       syscall = lttng::utils::container_of(rule, &lttng_event_rule_kernel_syscall::parent);
        if (!syscall->filter_expression) {
                status = LTTNG_EVENT_RULE_STATUS_UNSET;
                goto end;
@@ -618,7 +619,7 @@ lttng_event_rule_kernel_syscall_get_emission_site(
                goto end;
        }
 
-       syscall = container_of(rule, struct lttng_event_rule_kernel_syscall, parent);
+       syscall = lttng::utils::container_of(rule, &lttng_event_rule_kernel_syscall::parent);
        emission_site = syscall->emission_site;
 
 end:
This page took 0.039591 seconds and 4 git commands to generate.