#linux #modules #kernel #fr #sorbonne
Linux modules
Les modules du linux ajoute des services dans le noyau: pilotes 1d8a-linux-drivers, appels systèmes, implementations des protocoles réseau.
Dans linux, il peut être chargé ou déchargé dynamiquement. Les modules s'execute en mode système.
cheat-sheet on linux module development here
Les modules linux doivent toujours avoir une fonction d'initialisation et une fonction de sortie:
/* headers here */
static int __init mod_init(void) { /* ... */ }
static void __exit mod_cleanup(void) { /* ... */ }
module_init(mod_init);
module_exit(mod_cleanup);
Module dependencies
If a module X uses at least one symbol from module Y, then X depends on Y.
The dependencies are automatically inferred when compiled and available at /lib/module/<version>/module.dep generated by depmod.
Building a module
The running kernel is deployed with a generic Makefile 1 1a4-make
make -C /lib/module/\\((uname -r)/build M=\\)PWD
This following Makefile can be used to compile a kernel module:
KERNELDIR_LKP ?= /lib/modules/$(shell uname -r)/build
obj-m += helloWorld.o
all:
make -C \\((KERNELDIR_LKP) M=\\)$PWD modules
clean:
make -C \\((KERNELDIR_LKP) M=\\)$PWD clean
https://www.kernel.org/doc/Documentation/kbuild/modules.txt