]> git.ipfire.org Git - thirdparty/kmod.git/commitdiff
Add test-insmod to insert modules
authorLucas De Marchi <lucas.demarchi@profusion.mobi>
Fri, 25 Nov 2011 03:25:18 +0000 (01:25 -0200)
committerLucas De Marchi <lucas.demarchi@profusion.mobi>
Fri, 25 Nov 2011 03:25:18 +0000 (01:25 -0200)
Insmod is supported only with file names yet.

Makefile.am
test/.gitignore
test/test-insmod.c [new file with mode: 0644]

index 13b655b02ac78c4fe385b48a56165a0c00091038..4a0f09bdf0db2991a4a2734b92a1de29baa472aa 100644 (file)
@@ -53,10 +53,13 @@ test_test_init_LDADD = libkmod/libkmod.la
 test_test_loaded_SOURCES = test/test-loaded.c
 test_test_loaded_LDADD = libkmod/libkmod.la
 
-noinst_PROGRAMS = test/test-rmmod test/test-rmmod2 \
+noinst_PROGRAMS = test/test-insmod test/test-rmmod test/test-rmmod2 \
                  $(check_PROGRAMS)
 test_test_rmmod_SOURCES = test/test-rmmod.c
 test_test_rmmod_LDADD = libkmod/libkmod.la
 
 test_test_rmmod2_SOURCES = test/test-rmmod2.c
 test_test_rmmod2_LDADD = libkmod/libkmod.la
+
+test_test_insmod_SOURCES = test/test-insmod.c
+test_test_insmod_LDADD = libkmod/libkmod.la
index db1a45e49eaa73f188391b1b2c7b61692df479bc..bc9eb6ee4a01acc59ffbd5444d22e3ed2b92a6bb 100644 (file)
@@ -3,3 +3,4 @@ test-init
 test-loaded
 test-rmmod
 test-rmmod2
+test-insmod
diff --git a/test/test-insmod.c b/test/test-insmod.c
new file mode 100644 (file)
index 0000000..bbff878
--- /dev/null
@@ -0,0 +1,49 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <stddef.h>
+#include <errno.h>
+#include <unistd.h>
+#include <inttypes.h>
+#include <string.h>
+#include <libkmod.h>
+
+
+int main(int argc, char *argv[])
+{
+       const char *path;
+       struct kmod_ctx *ctx;
+       struct kmod_module *mod;
+       int err;
+
+       if (argc < 2) {
+               fprintf(stderr, "Provide a path to a module\n");
+               return EXIT_FAILURE;
+       }
+
+       path = argv[1];
+
+       ctx = kmod_new(NULL);
+       if (ctx == NULL)
+               exit(EXIT_FAILURE);
+
+       printf("libkmod version %s\n", VERSION);
+
+       err = kmod_module_new_from_path(ctx, path, &mod);
+       if (err < 0)
+               exit(EXIT_FAILURE);
+
+       printf("Trying insmod '%s'\n", path);
+       err = kmod_module_insert_module(mod, 0);
+       if (err < 0) {
+               fprintf(stderr, "%s\n", strerror(-err));
+
+               kmod_module_unref(mod);
+               kmod_unref(ctx);
+               exit(EXIT_FAILURE);
+       }
+
+       kmod_module_unref(mod);
+       kmod_unref(ctx);
+
+       return EXIT_SUCCESS;
+}