kmod/libkmod
Michal Suchanek 8463809f8a libkmod, depmod: Load modprobe.d, depmod.d from ${prefix}/lib.
There is an ongoing effort to limit use of files outside of /usr (or
${prefix} on general). Currently all modprobe.d paths are hardcoded to
outside of $prefix. Teach kmod to load modprobe.d from ${prefix}/lib.

On some distributions /usr/lib and /lib are the same directory because
of a compatibility symlink, and it is possible to craft configuration
files with sideeffects that would behave differently when loaded twice.
However, the override semantic ensures that one 'overrides' the other,
and only one configuration file of the same name is loaded from any of
the search directories.

Signed-off-by: Michal Suchanek <msuchanek@suse.de>
Link: https://lore.kernel.org/r/a290343ce32e2a3c25b134e4f27c13b26e06c9e0.1689681454.git.msuchanek@suse.de
Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
2023-10-17 12:27:59 -05:00
..
docs docs: Add missing functions to documentation 2022-03-03 00:57:10 -08:00
python Fix include in python bindings 2015-01-02 13:11:39 -02:00
.gitignore Rename libabc to libkmod 2011-11-21 14:35:35 -02:00
COPYING Change licenses 2011-12-12 18:24:35 -02:00
libkmod-builtin.c libkmod: annotate kmod_builtin_iter API as static 2023-02-21 16:35:37 -08:00
libkmod-config.c libkmod-config: fix a memory leak when kmod_list_append() fails 2021-04-09 08:12:01 -07:00
libkmod-elf.c libkmod: Do not inititialize file->memory on open 2023-06-09 10:45:51 -07:00
libkmod-file.c libkmod: Use kernel decompression when available 2023-06-20 14:39:25 -07:00
libkmod-index.c libkmod: fix return error when opening index 2020-03-23 12:37:40 -07:00
libkmod-index.h libkmod: fix return error when opening index 2020-03-23 12:37:40 -07:00
libkmod-internal.h libkmod: Use kernel decompression when available 2023-06-20 14:39:25 -07:00
libkmod-list.c Remove FSF mailing address 2014-12-25 23:41:34 -02:00
libkmod-module.c libkmod: Use kernel decompression when available 2023-06-20 14:39:25 -07:00
libkmod-signature.c libkmod: error out on unknown hash algorithm 2023-02-09 12:08:14 -08:00
libkmod.c libkmod, depmod: Load modprobe.d, depmod.d from ${prefix}/lib. 2023-10-17 12:27:59 -05:00
libkmod.h libkmod: Allow to ignore log message on module removal 2022-06-26 23:23:46 -07:00
libkmod.pc.in add Zstandard compression support 2020-09-10 21:55:01 -07:00
libkmod.sym libkmod: Add lookup from module name 2022-02-20 20:58:11 -08:00
Makefile build-sys: add small redirecting Makefiles 2014-03-06 01:59:58 -03:00
README README: Move items from TODO 2013-07-17 02:31:27 -03:00

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 */
      }
   }