X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fmodprobe.c;h=24b34d0942b320a8fb9b888a8fd9db0d43620592;hp=e1f52afd972b48aab29df0a6ac9a9d33f7b47c19;hb=3a5f70173aa04d11ccb22694d5d31a702cad33ab;hpb=adfe4f5ee4088878b68135a4bd64e7260f2330ba diff --git a/src/bin/lttng-sessiond/modprobe.c b/src/bin/lttng-sessiond/modprobe.c index e1f52afd9..24b34d094 100644 --- a/src/bin/lttng-sessiond/modprobe.c +++ b/src/bin/lttng-sessiond/modprobe.c @@ -14,7 +14,6 @@ */ #define _LGPL_SOURCE -#include #include #include #include @@ -52,6 +51,18 @@ struct kern_modules_param kern_modules_control_core[] = { .name = (char *) "lttng-ring-buffer-metadata-mmap-client", .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_REQUIRED, }, + { + .name = (char *) "lttng-ring-buffer-event_notifier-client", + .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL, + }, + { + .name = (char *) "lttng-counter-client-percpu-64-modular", + .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL, + }, + { + .name = (char *) "lttng-counter-client-percpu-32-modular", + .load_policy = KERNEL_MODULE_PROPERTY_LOAD_POLICY_OPTIONAL, + }, }; /* LTTng kerneltracer probe modules list */ @@ -502,14 +513,23 @@ static void modprobe_remove_lttng(const struct kern_modules_param *modules, modprobe[sizeof(modprobe) - 1] = '\0'; ret = system(modprobe); if (ret == -1) { - ERR("Unable to launch modprobe -r for module %s", - modules[i].name); - } else if (modules[i].load_policy == KERNEL_MODULE_PROPERTY_LOAD_POLICY_REQUIRED && WEXITSTATUS(ret) != 0) { - ERR("Unable to remove module %s", - modules[i].name); + if (modules[i].load_policy == KERNEL_MODULE_PROPERTY_LOAD_POLICY_REQUIRED) { + ERR("Unable to launch modprobe -r for required module %s", + modules[i].name); + } else { + DBG("Unable to launch modprobe -r for optional module %s", + 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); + } else { + DBG("Unable to remove optional module %s", + modules[i].name); + } } else { - DBG("Modprobe removal successful %s", - modules[i].name); + DBG("Modprobe removal successful %s", modules[i].name); } } } @@ -621,9 +641,9 @@ static int append_list_to_probes(const char *list) { char *next; int ret; - char *tmp_list, *cur_list; + char *tmp_list, *cur_list, *saveptr; - assert(list); + LTTNG_ASSERT(list); cur_list = tmp_list = strdup(list); if (!tmp_list) { @@ -635,7 +655,7 @@ static int append_list_to_probes(const char *list) size_t name_len; struct kern_modules_param *cur_mod; - next = strtok(cur_list, ","); + next = strtok_r(cur_list, ",", &saveptr); if (!next) { break; } @@ -697,7 +717,7 @@ int modprobe_lttng_data(void) * Base probes: either from command line option, environment * variable or default list. */ - list = config.kmod_probes_list.value; + list = the_config.kmod_probes_list.value; if (list) { /* User-specified probes. */ ret = append_list_to_probes(list); @@ -733,7 +753,7 @@ int modprobe_lttng_data(void) /* * Extra modules? Append them to current probes list. */ - list = config.kmod_extra_probes_list.value; + list = the_config.kmod_extra_probes_list.value; if (list) { ret = append_list_to_probes(list); if (ret) {