Bonjour,
Désolé si le titre n’est pas clair, je ne savais pas trop quoi mettre. Je lis un livre sur les systèmes d’exploitation en ce moment et il me propose un petit exercice où je dois créer un module pour le noyau linux. Voici le résultat :
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/hash.h>
#include <linux/gcd.h>
int simple_init(void)
{
printk(KERN_INFO "Loading kernel module\n");
printk(KERN_INFO "%llu", GOLDEN_RATIO_PRIME);
return 0;
}
void simple_exit(void)
{
printk(KERN_INFO "Removing kernel module\n");
printk(KERN_INFO "%lu", gcd(3300, 24));
}
module_init(simple_init);
module_exit(simple_exit);
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("Simple module");
MODULE_AUTHOR("wizix");
Quand j’installe le module avec sudo insmod simple.ko
et que j’affiche les logs du kernel, j’ai les messages suivants :
[ 4138.471618] 12
[ 4146.013948] Loading kernel module
Première question : pourquoi j’ai le GCD de 3300 et 24 en premier !? (J’ai clean dmesg avant d’afficher). Quand je supprime le module, j’obtiens :
[ 4206.961970] 12
[ 4216.868676] Loading kernel module
[ 4216.868680] 7046029254386353131
[ 4297.049740] Removing kernel module
Ce qui me surprend le plus, c’est le nombre de secondes qui ne correspond pas du tout. J’ai l’impression que le premier 12 provient d’une ancienne installation/suppression du module. Pourquoi n’a t-il pas été supprimé avec sudo dmesg -c
? Si c’est bien le cas, pourquoi 7046029254386353131
n’apparaît pas au moment où je monte le module mais au moment où il y a une autre update (comme la suppression du module ou alors une nouvelle ligne dans les logs) ? De même, où est le dernier 12 après Removing kernel module
?
Merci pour votre aide !