diff --git a/README.md b/README.md index 29ad620..d66ceec 100644 --- a/README.md +++ b/README.md @@ -24,3 +24,15 @@ Il suffit ensuite d'aller dans le dossier de votre choix et faire `make`. L'Eudyptula challenge demande souvent des preuves de notre réussite. Vous pouvez retrouver les commandes et leur résultat ici. + +### Tache 1 + +Pour montrer que mon module marche bien, on regarde les logs du kernel avec la +commande `dmesg`. + +``` +# après insmod hello.ko +[102102.117958] Coucou le gens !!!! +# après rmmod hello +[102108.046104] Tschuss !!! +``` diff --git a/task_1/Makefile b/task_1/Makefile new file mode 100644 index 0000000..0b71a0b --- /dev/null +++ b/task_1/Makefile @@ -0,0 +1,9 @@ +obj-m += hello1.o + +PWD := $(CURDIR) + +all: + make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules + +clean: + make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean diff --git a/task_1/hello.c b/task_1/hello.c new file mode 100644 index 0000000..fac6879 --- /dev/null +++ b/task_1/hello.c @@ -0,0 +1,30 @@ +#include +#include + +static int __init my_init(void) +{ + /* + * c'est une macro récente qui permet de remplacer prink(KERN_INFO "coucou") + */ + pr_info("Coucou le gens !!!!\n"); + return 0; +} + +static void __exit my_exit(void) +{ + pr_info("Tschuss !!!\n"); +} + +/* + * avant, on utilisait les fonctions int init_module(void) et + * void cleanup_module(void) à la place des macros pour initialiser le module. + * + * la méthode la plus récente pour faire des modules est d'utiliser les macros + * suivantes pour définir les fonctions d'initialisation et de sortie. + */ +module_init(my_init); +module_exit(my_exit); + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("rick "); +MODULE_DESCRIPTION("Module de la premiere tache de l'Eudyptula challenge");