clang-tidy: add Chrome-inspired checks
[lttng-tools.git] / src / bin / lttng-sessiond / modprobe.cpp
index 782dcc6b2714d334b0397cdee548abd0d83642a9..ac9f14257c6c5334a38be31e494d98fd6e619656 100644 (file)
  */
 
 #define _LGPL_SOURCE
+#include "kern-modules.hpp"
+#include "lttng-sessiond.hpp"
+#include "modprobe.hpp"
+
+#include <common/common.hpp>
+#include <common/utils.hpp>
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <sys/wait.h>
 
-#include <common/common.h>
-#include <common/utils.h>
-
-#include "modprobe.h"
-#include "kern-modules.h"
-#include "lttng-sessiond.h"
-
 /* LTTng kernel tracer mandatory core modules list */
 struct kern_modules_param kern_modules_control_core[] = {
        {
@@ -299,13 +299,13 @@ static int probes_capacity;
 /**
  * @brief Logging function for libkmod integration.
  */
-static ATTR_FORMAT_PRINTF(6, 0)
-void log_kmod(void *data __attribute__((unused)),
-               int priority __attribute__((unused)),
-               const char *file __attribute__((unused)),
-               int line __attribute__((unused)),
-               const char *fn __attribute__((unused)),
-               const char *format, va_list args)
+static ATTR_FORMAT_PRINTF(6, 0) void log_kmod(void *data __attribute__((unused)),
+                                             int priority __attribute__((unused)),
+                                             const char *file __attribute__((unused)),
+                                             int line __attribute__((unused)),
+                                             const char *fn __attribute__((unused)),
+                                             const char *format,
+                                             va_list args)
 {
        char *str;
 
@@ -330,7 +330,7 @@ static int setup_kmod_ctx(struct kmod_ctx **ctx)
 {
        int ret = 0;
 
-       *ctx = kmod_new(NULL, NULL);
+       *ctx = kmod_new(nullptr, nullptr);
        if (!ctx) {
                PERROR("Unable to create kmod library context");
                ret = -ENOMEM;
@@ -344,7 +344,7 @@ static int setup_kmod_ctx(struct kmod_ctx **ctx)
         */
        DIAGNOSTIC_PUSH
        DIAGNOSTIC_IGNORE_SUGGEST_ATTRIBUTE_FORMAT
-       kmod_set_log_fn(*ctx, log_kmod, NULL);
+       kmod_set_log_fn(*ctx, log_kmod, nullptr);
        DIAGNOSTIC_POP
        ret = kmod_load_resources(*ctx);
        if (ret < 0) {
@@ -368,8 +368,7 @@ error:
  * @returns            \c 0 on success
  *                     \c < 0 on error
  */
-static int modprobe_lttng(struct kern_modules_param *modules,
-               int entries)
+static int modprobe_lttng(struct kern_modules_param *modules, int entries)
 {
        int ret = 0, i;
        struct kmod_ctx *ctx;
@@ -380,7 +379,7 @@ static int modprobe_lttng(struct kern_modules_param *modules,
        }
 
        for (i = 0; i < entries; i++) {
-               struct kmod_module *mod = NULL;
+               struct kmod_module *mod = nullptr;
 
                ret = kmod_module_new_from_name(ctx, modules[i].name, &mod);
                if (ret < 0) {
@@ -388,19 +387,17 @@ static int modprobe_lttng(struct kern_modules_param *modules,
                        goto error;
                }
 
-               ret = kmod_module_probe_insert_module(mod, 0,
-                               NULL, NULL, NULL, NULL);
+               ret = kmod_module_probe_insert_module(mod, 0, nullptr, nullptr, nullptr, nullptr);
                if (ret == -EEXIST) {
                        DBG("Module %s is already loaded", modules[i].name);
                        ret = 0;
                } else if (ret < 0) {
                        if (modules[i].load_policy == KERNEL_MODULE_PROPERTY_LOAD_POLICY_REQUIRED) {
-                               ERR("Unable to load required module %s",
-                                               modules[i].name);
+                               ERR("Unable to load required module %s", modules[i].name);
                                goto error;
                        } else {
                                DBG("Unable to load optional module %s; continuing",
-                                               modules[i].name);
+                                   modules[i].name);
                                ret = 0;
                        }
                } else {
@@ -430,7 +427,8 @@ error:
  * @returns            \c 0 on success
  *                     \c < 0 on error
  */
-static int rmmod_recurse(struct kmod_module *mod) {
+static int rmmod_recurse(struct kmod_module *mod)
+{
        int ret = 0;
        struct kmod_list *deps, *itr;
 
@@ -442,12 +440,12 @@ static int rmmod_recurse(struct kmod_module *mod) {
        ret = kmod_module_remove_module(mod, 0);
 
        deps = kmod_module_get_dependencies(mod);
-       if (deps != NULL) {
-               kmod_list_foreach(itr, deps) {
+       if (deps != nullptr) {
+               kmod_list_foreach(itr, deps)
+               {
                        struct kmod_module *dep = kmod_module_get_module(itr);
                        if (kmod_module_get_refcnt(dep) == 0) {
-                               DBG("Recursive remove module %s",
-                                               kmod_module_get_name(dep));
+                               DBG("Recursive remove module %s", kmod_module_get_name(dep));
                                rmmod_recurse(dep);
                        }
                        kmod_module_unref(dep);
@@ -465,8 +463,7 @@ static int rmmod_recurse(struct kmod_module *mod) {
  * @param entries      Number of modules in the list
  *
  */
-static void modprobe_remove_lttng(const struct kern_modules_param *modules,
-               int entries)
+static void modprobe_remove_lttng(const struct kern_modules_param *modules, int entries)
 {
        int ret = 0, i;
        struct kmod_ctx *ctx;
@@ -477,7 +474,7 @@ static void modprobe_remove_lttng(const struct kern_modules_param *modules,
        }
 
        for (i = entries - 1; i >= 0; i--) {
-               struct kmod_module *mod = NULL;
+               struct kmod_module *mod = nullptr;
 
                if (!modules[i].loaded) {
                        continue;
@@ -492,11 +489,11 @@ static void modprobe_remove_lttng(const struct kern_modules_param *modules,
                ret = rmmod_recurse(mod);
                if (ret == -EEXIST) {
                        DBG("Module %s is not in kernel.", modules[i].name);
-               } else if (modules[i].load_policy == KERNEL_MODULE_PROPERTY_LOAD_POLICY_REQUIRED && ret < 0) {
+               } else if (modules[i].load_policy == KERNEL_MODULE_PROPERTY_LOAD_POLICY_REQUIRED &&
+                          ret < 0) {
                        ERR("Unable to remove module %s", modules[i].name);
                } else {
-                       DBG("Modprobe removal successful %s",
-                               modules[i].name);
+                       DBG("Modprobe removal successful %s", modules[i].name);
                }
 
                kmod_module_unref(mod);
@@ -510,17 +507,20 @@ error:
 
 #else /* HAVE_KMOD */
 
-static int modprobe_lttng(struct kern_modules_param *modules,
-               int entries)
+static int modprobe_lttng(struct kern_modules_param *modules, int entries)
 {
        int ret = 0, i;
        char modprobe[256];
 
        for (i = 0; i < entries; i++) {
-               ret = snprintf(modprobe, sizeof(modprobe),
-                               "/sbin/modprobe %s%s",
-                               modules[i].load_policy == KERNEL_MODULE_PROPERTY_LOAD_POLICY_REQUIRED ? "" : "-q ",
-                               modules[i].name);
+               ret = snprintf(modprobe,
+                              sizeof(modprobe),
+                              "/sbin/modprobe %s%s",
+                              modules[i].load_policy ==
+                                              KERNEL_MODULE_PROPERTY_LOAD_POLICY_REQUIRED ?
+                                      "" :
+                                      "-q ",
+                              modules[i].name);
                if (ret < 0) {
                        PERROR("snprintf modprobe");
                        goto error;
@@ -530,21 +530,20 @@ static int modprobe_lttng(struct kern_modules_param *modules,
                if (ret == -1) {
                        if (modules[i].load_policy == KERNEL_MODULE_PROPERTY_LOAD_POLICY_REQUIRED) {
                                ERR("Unable to launch modprobe for required module %s",
-                                               modules[i].name);
+                                   modules[i].name);
                                goto error;
                        } else {
                                DBG("Unable to launch modprobe for optional module %s; continuing",
-                                               modules[i].name);
+                                   modules[i].name);
                                ret = 0;
                        }
                } else if (WEXITSTATUS(ret) != 0) {
                        if (modules[i].load_policy == KERNEL_MODULE_PROPERTY_LOAD_POLICY_REQUIRED) {
-                               ERR("Unable to load required module %s",
-                                               modules[i].name);
+                               ERR("Unable to load required module %s", modules[i].name);
                                goto error;
                        } else {
                                DBG("Unable to load optional module %s; continuing",
-                                               modules[i].name);
+                                   modules[i].name);
                                ret = 0;
                        }
                } else {
@@ -557,8 +556,7 @@ error:
        return ret;
 }
 
-static void modprobe_remove_lttng(const struct kern_modules_param *modules,
-               int entries)
+static void modprobe_remove_lttng(const struct kern_modules_param *modules, int entries)
 {
        int ret = 0, i;
        char modprobe[256];
@@ -567,9 +565,8 @@ static void modprobe_remove_lttng(const struct kern_modules_param *modules,
                if (!modules[i].loaded) {
                        continue;
                }
-               ret = snprintf(modprobe, sizeof(modprobe),
-                               "/sbin/modprobe -r -q %s",
-                               modules[i].name);
+               ret = snprintf(
+                       modprobe, sizeof(modprobe), "/sbin/modprobe -r -q %s", modules[i].name);
                if (ret < 0) {
                        PERROR("snprintf modprobe -r");
                        return;
@@ -579,18 +576,16 @@ static void modprobe_remove_lttng(const struct kern_modules_param *modules,
                if (ret == -1) {
                        if (modules[i].load_policy == KERNEL_MODULE_PROPERTY_LOAD_POLICY_REQUIRED) {
                                ERR("Unable to launch modprobe -r for required module %s",
-                                               modules[i].name);
+                                   modules[i].name);
                        } else {
                                DBG("Unable to launch modprobe -r for optional module %s",
-                                               modules[i].name);
+                                   modules[i].name);
                        }
                } else if (WEXITSTATUS(ret) != 0) {
                        if (modules[i].load_policy == KERNEL_MODULE_PROPERTY_LOAD_POLICY_REQUIRED) {
-                               ERR("Unable to remove required module %s",
-                                               modules[i].name);
+                               ERR("Unable to remove required module %s", modules[i].name);
                        } else {
-                               DBG("Unable to remove optional module %s",
-                                               modules[i].name);
+                               DBG("Unable to remove optional module %s", modules[i].name);
                        }
                } else {
                        DBG("Modprobe removal successful %s", modules[i].name);
@@ -603,13 +598,12 @@ static void modprobe_remove_lttng(const struct kern_modules_param *modules,
 /*
  * Remove control kernel module(s) in reverse load order.
  */
-void modprobe_remove_lttng_control(void)
+void modprobe_remove_lttng_control()
 {
-       modprobe_remove_lttng(kern_modules_control_core,
-                       ARRAY_SIZE(kern_modules_control_core));
+       modprobe_remove_lttng(kern_modules_control_core, ARRAY_SIZE(kern_modules_control_core));
 }
 
-static void free_probes(void)
+static void free_probes()
 {
        int i;
 
@@ -620,14 +614,14 @@ static void free_probes(void)
                free(probes[i].name);
        }
        free(probes);
-       probes = NULL;
+       probes = nullptr;
        nr_probes = 0;
 }
 
 /*
  * Remove data kernel modules in reverse load order.
  */
-void modprobe_remove_lttng_data(void)
+void modprobe_remove_lttng_data()
 {
        if (!probes) {
                return;
@@ -640,7 +634,7 @@ void modprobe_remove_lttng_data(void)
 /*
  * Remove all kernel modules in reverse order.
  */
-void modprobe_remove_lttng_all(void)
+void modprobe_remove_lttng_all()
 {
        modprobe_remove_lttng_data();
        modprobe_remove_lttng_control();
@@ -649,24 +643,23 @@ void modprobe_remove_lttng_all(void)
 /*
  * Load control kernel module(s).
  */
-int modprobe_lttng_control(void)
+int modprobe_lttng_control()
 {
-       return modprobe_lttng(kern_modules_control_core,
-                       ARRAY_SIZE(kern_modules_control_core));
+       return modprobe_lttng(kern_modules_control_core, ARRAY_SIZE(kern_modules_control_core));
 }
 
 /**
  * Grow global list of probes (double capacity or set it to 1 if
  * currently 0 and copy existing data).
  */
-static int grow_probes(void)
+static int grow_probes()
 {
        int i;
        struct kern_modules_param *tmp_probes;
 
        /* 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;
@@ -679,7 +672,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;
@@ -723,7 +716,7 @@ static int append_list_to_probes(const char *list)
                if (!next) {
                        break;
                }
-               cur_list = NULL;
+               cur_list = nullptr;
 
                /* filter leading spaces */
                while (*next == ' ') {
@@ -741,7 +734,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;
@@ -772,7 +765,7 @@ error:
 /*
  * Load data kernel module(s).
  */
-int modprobe_lttng_data(void)
+int modprobe_lttng_data()
 {
        int ret, i;
        char *list;
@@ -792,7 +785,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;
@@ -801,7 +794,7 @@ int modprobe_lttng_data(void)
                nr_probes = probes_capacity = def_len;
 
                for (i = 0; i < def_len; ++i) {
-                       charname = strdup(kern_modules_probes_default[i].name);
+                       char *name = strdup(kern_modules_probes_default[i].name);
 
                        if (!name) {
                                PERROR("strdup probe item");
This page took 0.029091 seconds and 4 git commands to generate.