Add type-checked versions of allocation and deallocations functions
[lttng-tools.git] / src / bin / lttng-sessiond / modprobe.cpp
index fb2bcc8aad8147077f4e3d9a13bc377fae633b8f..90ed3ff14479b43a9dcdbf43ad5440358d311923 100644 (file)
 #include <stdlib.h>
 #include <sys/wait.h>
 
-#include <common/common.h>
-#include <common/utils.h>
+#include <common/common.hpp>
+#include <common/utils.hpp>
 
-#include "modprobe.h"
-#include "kern-modules.h"
-#include "lttng-sessiond.h"
+#include "modprobe.hpp"
+#include "kern-modules.hpp"
+#include "lttng-sessiond.hpp"
 
 /* LTTng kernel tracer mandatory core modules list */
 struct kern_modules_param kern_modules_control_core[] = {
        {
                .name = (char *) "lttng-ring-buffer-client-discard",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_REQUIRED,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-ring-buffer-client-overwrite",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_REQUIRED,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-ring-buffer-metadata-client",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_REQUIRED,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-ring-buffer-client-mmap-discard",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_REQUIRED,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-ring-buffer-client-mmap-overwrite",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_REQUIRED,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-ring-buffer-metadata-mmap-client",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_REQUIRED,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-ring-buffer-event_notifier-client",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-counter-client-percpu-64-modular",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-counter-client-percpu-32-modular",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
 };
 
@@ -70,170 +79,212 @@ struct kern_modules_param kern_modules_probes_default[] = {
        {
                .name = (char *) "lttng-probe-asoc",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-block",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-btrfs",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-compaction",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-ext3",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-ext4",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-gpio",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-i2c",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-irq",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-jbd",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-jbd2",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-kmem",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-kvm",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-kvm-x86",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-kvm-x86-mmu",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-lock",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-module",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-napi",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-net",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-power",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-preemptirq",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-printk",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-random",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-rcu",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-regmap",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-regulator",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-rpm",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-sched",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-scsi",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-signal",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-skb",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-sock",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-statedump",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-sunrpc",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-timer",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-udp",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-vmscan",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-v4l2",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-workqueue",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-writeback",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-x86-irq-vectors",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
        {
                .name = (char *) "lttng-probe-x86-exceptions",
                .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL,
+               .loaded = false,
        },
 };
 
@@ -615,7 +666,7 @@ static int grow_probes(void)
 
        /* Initialize capacity to 1 if 0. */
        if (probes_capacity == 0) {
-               probes = (kern_modules_param *) zmalloc(sizeof(*probes));
+               probes = zmalloc<kern_modules_param>();
                if (!probes) {
                        PERROR("malloc probe list");
                        return -ENOMEM;
@@ -628,7 +679,7 @@ static int grow_probes(void)
        /* Double size. */
        probes_capacity *= 2;
 
-       tmp_probes = (kern_modules_param *) zmalloc(sizeof(*tmp_probes) * probes_capacity);
+       tmp_probes = calloc<kern_modules_param>(probes_capacity);
        if (!tmp_probes) {
                PERROR("malloc probe list");
                return -ENOMEM;
@@ -690,7 +741,7 @@ static int append_list_to_probes(const char *list)
                name_len = strlen(next) + 13;
 
                cur_mod = &probes[nr_probes];
-               cur_mod->name = (char *) zmalloc(name_len);
+               cur_mod->name = calloc<char>(name_len);
                if (!cur_mod->name) {
                        PERROR("malloc probe list");
                        ret = -ENOMEM;
@@ -741,7 +792,7 @@ int modprobe_lttng_data(void)
                /* Default probes. */
                int def_len = ARRAY_SIZE(kern_modules_probes_default);
 
-               probes = (kern_modules_param *) zmalloc(sizeof(*probes) * def_len);
+               probes = calloc<kern_modules_param>(def_len);
                if (!probes) {
                        PERROR("malloc probe list");
                        return -ENOMEM;
This page took 0.026135 seconds and 4 git commands to generate.