summaryrefslogtreecommitdiffstats
path: root/libkmod/README
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 17:03:56 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 17:03:56 +0000
commit18da3ffcd7f3c8a0c5f790c801b5813503c2273d (patch)
tree84caf98dc5cef3d123c56ba12e35fd67026e0693 /libkmod/README
parentInitial commit. (diff)
downloadkmod-18da3ffcd7f3c8a0c5f790c801b5813503c2273d.tar.xz
kmod-18da3ffcd7f3c8a0c5f790c801b5813503c2273d.zip
Adding upstream version 31+20240202.upstream/31+20240202
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'libkmod/README')
-rw-r--r--libkmod/README58
1 files changed, 58 insertions, 0 deletions
diff --git a/libkmod/README b/libkmod/README
new file mode 100644
index 0000000..3e1c8dc
--- /dev/null
+++ b/libkmod/README
@@ -0,0 +1,58 @@
+libkmod - linux kernel module handling library
+
+ABSTRACT
+========
+
+libkmod was created to allow programs to easily insert, remove and
+list modules, also checking its properties, dependencies and aliases.
+
+there is no shared/global context information and it can be used by
+multiple sites on a single program, also being able to be used from
+threads, although it's not thread safe (you must lock explicitly).
+
+
+OVERVIEW
+========
+
+Every user should create and manage it's own library context with:
+
+ struct kmod_ctx *ctx = kmod_new(kernel_dirname);
+ kmod_unref(ctx);
+
+
+Modules can be created by various means:
+
+ struct kmod_module *mod;
+ int err;
+
+ err = kmod_module_new_from_path(ctx, path, &mod);
+ if (err < 0) {
+ /* code */
+ } else {
+ /* code */
+ kmod_module_unref(mod);
+ }
+
+ err = kmod_module_new_from_name(ctx, name, &mod);
+ if (err < 0) {
+ /* code */
+ } else {
+ /* code */
+ kmod_module_unref(mod);
+ }
+
+
+Or could be resolved from a known alias to a list of alternatives:
+
+ struct kmod_list *list, *itr;
+ int err;
+ err = kmod_module_new_from_lookup(ctx, alias, &list);
+ if (err < 0) {
+ /* code */
+ } else {
+ kmod_list_foreach(itr, list) {
+ struct kmod_module *mod = kmod_module_get_module(itr);
+ /* code */
+ }
+ }
+