Paramètres d'un module
Linux permet de passer des paramètres à un module lors de son chargement.
Le code ci-dessous montre les adaptations à apporter au squelette du module pour supporter deux paramètres
/* skeleton.c */
#include <linux/module.h> /* needed by all modules */
#include <linux/init.h> /* needed for macros */
#include <linux/kernel.h> /* needed for debugging */
#include <linux/moduleparam.h> /* needed for module parameters */
static char* text = "dummy help";
module_param(text, charp, 0);
static int elements = 1;
module_param(elements, int, 0);
static int __init skeleton_init(void) {
pr_info ("Linux module skeleton loaded\n");
pr_info ("text: %s\nelements: %d\n", text, elements);
return 0;
}
static void __exit skeleton_exit(void) {
pr_info ("Linux module skeleton unloaded\n");
}
module_init (skeleton_init);
module_exit (skeleton_exit);
MODULE_AUTHOR ("Jacques Supcik <jacques.supcik@hefr.ch>");
MODULE_DESCRIPTION ("Module skeleton");
MODULE_LICENSE ("GPL");
La macro module_param
permet de définir des paramètres dans un module.
Cette macro est disponible depuis l’interface linux/moduleparam.h
- 1er argument : indique le nom du paramètre et de la variable dans le module
- 2ème argument : indique le type de paramètre
(
byte
,short
,ushort
,int
,uint
,long
,ulong
,charp
oubool
). Ce paramètre est contrôlé lors de la compilation. - 3ème argument : spécifie les droits d’accès au fichier contenant les
paramètres (
/sys/module/<module_name>/parameters/<param>
). La valeur0
indique que ce fichier n’existe pas.
Le passage de paramètres s’effectue lors du chargement du module
- Avec
insmod
:insmod mymodule.ko elements=-1 'text="bonjour le monde"'
- Avec
modprobe
, il suffit d’inclure les paramètres du module dans le fichier/etc/modprobe.conf
, par exemple :options mymodule elements=5 text="salut les copains..."
- Si le module est linké statiquement avec le noyau, on peut passer
les paramètres dans la ligne de commande du noyau lors de son
lancement, par exemple :
mymodule.elements=10