+static void modprobe_remove_lttng(const struct kern_modules_param *modules,
+ int entries, int required)
+{
+ int ret = 0, i;
+ 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);
+ if (ret < 0) {
+ PERROR("snprintf modprobe -r");
+ return;
+ }
+ 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 (required && WEXITSTATUS(ret) != 0) {
+ ERR("Unable to remove module %s",
+ modules[i].name);
+ } else {
+ DBG("Modprobe removal successful %s",
+ modules[i].name);
+ }
+ }
+}
+