X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fmodprobe.c;h=03545ef41d25b0acf21a5681431daf5d16e99794;hp=3e41f5c1b6539a9eaa3af8706700c074c473c2b9;hb=ab0ee2ca29394fa28284b94cc3c598960660404f;hpb=d11b2027e5df11fa8af3e59995ed1eae13152d77 diff --git a/src/bin/lttng-sessiond/modprobe.c b/src/bin/lttng-sessiond/modprobe.c index 3e41f5c1b..03545ef41 100644 --- a/src/bin/lttng-sessiond/modprobe.c +++ b/src/bin/lttng-sessiond/modprobe.c @@ -57,6 +57,7 @@ struct kern_modules_param kern_modules_probes_default[] = { { "lttng-probe-ext3" }, { "lttng-probe-ext4" }, { "lttng-probe-gpio" }, + { "lttng-probe-i2c" }, { "lttng-probe-irq" }, { "lttng-probe-jbd" }, { "lttng-probe-jbd2" }, @@ -180,9 +181,12 @@ static int modprobe_lttng(struct kern_modules_param *modules, goto error; } - ret = kmod_module_probe_insert_module(mod, KMOD_PROBE_IGNORE_LOADED, + ret = kmod_module_probe_insert_module(mod, 0, NULL, NULL, NULL, NULL); - if (ret < 0) { + if (ret == -EEXIST) { + DBG("Module %s is already loaded", modules[i].name); + ret = 0; + } else if (ret < 0) { if (required) { ERR("Unable to load required module %s", modules[i].name); @@ -194,6 +198,7 @@ static int modprobe_lttng(struct kern_modules_param *modules, } } else { DBG("Modprobe successfully %s", modules[i].name); + modules[i].loaded = true; } kmod_module_unref(mod); @@ -268,6 +273,10 @@ static void modprobe_remove_lttng(const struct kern_modules_param *modules, for (i = entries - 1; i >= 0; i--) { struct kmod_module *mod = NULL; + if (!modules[i].loaded) { + continue; + } + ret = kmod_module_new_from_name(ctx, modules[i].name, &mod); if (ret < 0) { PERROR("Failed to create kmod module for %s", modules[i].name); @@ -334,6 +343,7 @@ static int modprobe_lttng(struct kern_modules_param *modules, } } else { DBG("Modprobe successfully %s", modules[i].name); + modules[i].loaded = true; } } @@ -348,6 +358,9 @@ static void modprobe_remove_lttng(const struct kern_modules_param *modules, char modprobe[256]; for (i = entries - 1; i >= 0; i--) { + if (!modules[i].loaded) { + continue; + } ret = snprintf(modprobe, sizeof(modprobe), "/sbin/modprobe -r -q %s", modules[i].name);