common: replace container_of with a C++ safe implementation
[lttng-tools.git] / src / common / event-rule / kernel-kprobe.cpp
index d33d446055c2f1f152276aad719ee2ba3c02f539..239373aa90136f21bcaf5a885cb2deb8b0de9587 100644 (file)
@@ -5,21 +5,21 @@
  *
  */
 
-#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/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 <ctype.h>
 #include <lttng/constant.h>
-#include <lttng/event-rule/event-rule-internal.h>
+#include <lttng/event-rule/event-rule-internal.hpp>
 #include <lttng/event-rule/event-rule.h>
-#include <lttng/event-rule/kernel-kprobe-internal.h>
-#include <lttng/kernel-probe-internal.h>
+#include <lttng/event-rule/kernel-kprobe-internal.hpp>
+#include <lttng/kernel-probe-internal.hpp>
 #include <lttng/kernel-probe.h>
 #include <stdio.h>
 
@@ -34,7 +34,7 @@ static void lttng_event_rule_kernel_kprobe_destroy(struct lttng_event_rule *rule
 {
        struct lttng_event_rule_kernel_kprobe *kprobe;
 
-       kprobe = container_of(rule, struct lttng_event_rule_kernel_kprobe, parent);
+       kprobe = lttng::utils::container_of(rule, &lttng_event_rule_kernel_kprobe::parent);
 
        lttng_kernel_probe_location_destroy(kprobe->location);
        free(kprobe->name);
@@ -51,7 +51,7 @@ static bool lttng_event_rule_kernel_kprobe_validate(
                goto end;
        }
 
-       kprobe = container_of(rule, struct lttng_event_rule_kernel_kprobe, parent);
+       kprobe = lttng::utils::container_of(rule, &lttng_event_rule_kernel_kprobe::parent);
 
        /* Required field. */
        if (!kprobe->name) {
@@ -88,7 +88,7 @@ static int lttng_event_rule_kernel_kprobe_serialize(
        header_offset = payload->buffer.size;
 
        DBG("Serializing kprobe event rule.");
-       kprobe = container_of(rule, struct lttng_event_rule_kernel_kprobe, parent);
+       kprobe = lttng::utils::container_of(rule, &lttng_event_rule_kernel_kprobe::parent);
 
        name_len = strlen(kprobe->name) + 1;
        kprobe_comm.name_len = name_len;
@@ -128,8 +128,8 @@ static bool lttng_event_rule_kernel_kprobe_is_equal(const struct lttng_event_rul
        bool is_equal = false;
        struct lttng_event_rule_kernel_kprobe *a, *b;
 
-       a = container_of(_a, struct lttng_event_rule_kernel_kprobe, parent);
-       b = container_of(_b, struct lttng_event_rule_kernel_kprobe, parent);
+       a = lttng::utils::container_of(_a, &lttng_event_rule_kernel_kprobe::parent);
+       b = lttng::utils::container_of(_b, &lttng_event_rule_kernel_kprobe::parent);
 
        /* Quick checks */
        if (!!a->name != !!b->name) {
@@ -150,29 +150,31 @@ end:
 }
 
 static enum lttng_error_code lttng_event_rule_kernel_kprobe_generate_filter_bytecode(
-               struct lttng_event_rule *rule,
-               const struct lttng_credentials *creds)
+               struct lttng_event_rule *rule __attribute__((unused)),
+               const struct lttng_credentials *creds __attribute__((unused)))
 {
        /* Nothing to do. */
        return LTTNG_OK;
 }
 
 static const char *lttng_event_rule_kernel_kprobe_get_filter(
-               const struct lttng_event_rule *rule)
+               const struct lttng_event_rule *rule __attribute__((unused)))
 {
        /* Not supported. */
        return NULL;
 }
 
 static const struct lttng_bytecode *
-lttng_event_rule_kernel_kprobe_get_filter_bytecode(const struct lttng_event_rule *rule)
+lttng_event_rule_kernel_kprobe_get_filter_bytecode(
+               const struct lttng_event_rule *rule __attribute__((unused)))
 {
        /* Not supported. */
        return NULL;
 }
 
 static enum lttng_event_rule_generate_exclusions_status
-lttng_event_rule_kernel_kprobe_generate_exclusions(const struct lttng_event_rule *rule,
+lttng_event_rule_kernel_kprobe_generate_exclusions(
+               const struct lttng_event_rule *rule __attribute__((unused)),
                struct lttng_event_exclusion **exclusions)
 {
        /* Not supported. */
@@ -186,7 +188,7 @@ lttng_event_rule_kernel_kprobe_hash(
 {
        unsigned long hash;
        struct lttng_event_rule_kernel_kprobe *krule =
-                       container_of(rule, typeof(*krule), parent);
+                       lttng::utils::container_of(rule, &lttng_event_rule_kernel_kprobe::parent);
 
        hash = hash_key_ulong((void *) LTTNG_EVENT_RULE_TYPE_KERNEL_KPROBE,
                        lttng_ht_seed);
@@ -287,7 +289,7 @@ struct lttng_event_rule *lttng_event_rule_kernel_kprobe_create(
        struct lttng_event_rule *rule = NULL;
        struct lttng_event_rule_kernel_kprobe *krule;
 
-       krule = (lttng_event_rule_kernel_kprobe *) zmalloc(sizeof(struct lttng_event_rule_kernel_kprobe));
+       krule = zmalloc<lttng_event_rule_kernel_kprobe>();
        if (!krule) {
                goto end;
        }
@@ -432,7 +434,7 @@ enum lttng_event_rule_status lttng_event_rule_kernel_kprobe_get_location(
                goto end;
        }
 
-       kprobe = container_of(rule, struct lttng_event_rule_kernel_kprobe, parent);
+       kprobe = lttng::utils::container_of(rule, &lttng_event_rule_kernel_kprobe::parent);
        *location = kprobe->location;
 
        if (!*location) {
@@ -457,7 +459,7 @@ enum lttng_event_rule_status lttng_event_rule_kernel_kprobe_set_event_name(
                goto end;
        }
 
-       kprobe = container_of(rule, struct lttng_event_rule_kernel_kprobe, parent);
+       kprobe = lttng::utils::container_of(rule, &lttng_event_rule_kernel_kprobe::parent);
        name_copy = strdup(name);
        if (!name_copy) {
                status = LTTNG_EVENT_RULE_STATUS_ERROR;
@@ -483,7 +485,7 @@ enum lttng_event_rule_status lttng_event_rule_kernel_kprobe_get_event_name(
                goto end;
        }
 
-       kprobe = container_of(rule, struct lttng_event_rule_kernel_kprobe, parent);
+       kprobe = lttng::utils::container_of(rule, &lttng_event_rule_kernel_kprobe::parent);
        if (!kprobe->name) {
                status = LTTNG_EVENT_RULE_STATUS_UNSET;
                goto end;
This page took 0.027616 seconds and 4 git commands to generate.