common: replace container_of with a C++ safe implementation
[lttng-tools.git] / src / bin / lttng-sessiond / lttng-syscall.cpp
index 7dae12d9f39ea0c9b7ce1c2a83637ff5feabfdfd..8a4ce39ea8e6bcd6b9fbf71d9cd39f02d2f99ad1 100644 (file)
@@ -8,13 +8,13 @@
 #define _LGPL_SOURCE
 #include <stdbool.h>
 
-#include <common/common.h>
-#include <common/kernel-ctl/kernel-ctl.h>
+#include <common/common.hpp>
+#include <common/kernel-ctl/kernel-ctl.hpp>
 
-#include "lttng-sessiond.h"
-#include "kernel.h"
-#include "lttng-syscall.h"
-#include "utils.h"
+#include "lttng-sessiond.hpp"
+#include "kernel.hpp"
+#include "lttng-syscall.hpp"
+#include "utils.hpp"
 
 /* Global syscall table. */
 struct syscall *syscall_table;
@@ -60,7 +60,7 @@ int syscall_init_table(int tracer_fd)
        }
 
        nbmem = SYSCALL_TABLE_INIT_SIZE;
-       syscall_table = (struct syscall *) zmalloc(sizeof(struct syscall) * nbmem);
+       syscall_table = calloc<struct syscall>(nbmem);
        if (!syscall_table) {
                ret = -errno;
                PERROR("syscall list zmalloc");
@@ -156,6 +156,8 @@ static void destroy_syscall_ht(struct lttng_ht *ht)
        struct lttng_ht_iter iter;
        struct syscall *ksyscall;
 
+       ASSERT_RCU_READ_LOCKED();
+
        DBG3("Destroying syscall hash table.");
 
        if (!ht) {
@@ -208,7 +210,7 @@ static struct syscall *lookup_syscall(struct lttng_ht *ht, const char *name)
        lttng_ht_lookup(ht, (void *) name, &iter);
        node = lttng_ht_iter_get_node_str(&iter);
        if (node) {
-               ksyscall = caa_container_of(node, struct syscall, node);
+               ksyscall = lttng::utils::container_of(node, &syscall::node);
        }
 
        return ksyscall;
@@ -243,7 +245,7 @@ static int add_syscall_to_ht(struct lttng_ht *ht, unsigned int index,
 
        LTTNG_ASSERT(ht);
 
-       ksyscall = (struct syscall *) zmalloc(sizeof(*ksyscall));
+       ksyscall = zmalloc<struct syscall>();
        if (!ksyscall) {
                ret = -LTTNG_ERR_NOMEM;
                goto error;
@@ -286,7 +288,7 @@ ssize_t syscall_table_list(struct lttng_event **_events)
         * them might not be valid. The count below will make sure to return the
         * right size of the events array.
         */
-       events = (lttng_event *) zmalloc(syscall_table_nb_entry * sizeof(*events));
+       events = calloc<lttng_event>(syscall_table_nb_entry);
        if (!events) {
                PERROR("syscall table list zmalloc");
                ret = -LTTNG_ERR_NOMEM;
This page took 0.024138 seconds and 4 git commands to generate.