From a30ba27a3f0ba71c961f0b433e4acbe0046ec71e Mon Sep 17 00:00:00 2001 From: Florian RICHER Date: Tue, 18 Feb 2025 17:06:38 +0100 Subject: [PATCH] Reorder and add module params example --- .envrc | 2 +- .../Makefile | 0 02_module_params/test_module.c | 53 +++++++++++++++++++ .../Makefile | 0 .../README.md | 0 .../test_module.c | 0 .../Makefile | 0 .../test_module.c | 0 05_packet_filter/Makefile | 7 +++ .../test_module.c | 0 README.md | 1 + 11 files changed, 62 insertions(+), 1 deletion(-) rename {02_character_device => 02_module_params}/Makefile (100%) create mode 100644 02_module_params/test_module.c rename {03_process_monitor => 03_character_device}/Makefile (100%) rename {02_character_device => 03_character_device}/README.md (100%) rename {02_character_device => 03_character_device}/test_module.c (100%) rename {04_packet_filter => 04_process_monitor}/Makefile (100%) rename {03_process_monitor => 04_process_monitor}/test_module.c (100%) create mode 100644 05_packet_filter/Makefile rename {04_packet_filter => 05_packet_filter}/test_module.c (100%) diff --git a/.envrc b/.envrc index 3550a30..6ea7737 100644 --- a/.envrc +++ b/.envrc @@ -1 +1 @@ -use flake +use flake .#other diff --git a/02_character_device/Makefile b/02_module_params/Makefile similarity index 100% rename from 02_character_device/Makefile rename to 02_module_params/Makefile diff --git a/02_module_params/test_module.c b/02_module_params/test_module.c new file mode 100644 index 0000000..68ef964 --- /dev/null +++ b/02_module_params/test_module.c @@ -0,0 +1,53 @@ +#include +#include + +static short int myshort = 1; +static int myint = 420; +static long int mylong = 9999; +static char *mystring = "blah"; +static int myintarray[2] = { 420, 420 }; +static int arr_argc = 0; + +module_param(myshort, short, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP); +MODULE_PARM_DESC(myshort, "A short integer"); + +module_param(myint, int, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); +MODULE_PARM_DESC(myint, "An integer"); + +module_param(mylong, long, S_IRUSR); +MODULE_PARM_DESC(mylong, "A long integer"); + +module_param(mystring, charp, 0000); +MODULE_PARM_DESC(mystring, "A character string"); + +module_param_array(myintarray, int, &arr_argc, 0000); +MODULE_PARM_DESC(myintarray, "An array of integers"); + +static int __init module_params_init(void) { + int i; + + pr_info("myshort: %hd\n", myshort); + pr_info("myint: %d\n", myint); + pr_info("mylong: %ld\n", mylong); + pr_info("mystring: %s\n", mystring); + + for (i = 0; i < ARRAY_SIZE(myintarray); i++) + pr_info("myintarray[%d] = %d\n", i, myintarray[i]); + + pr_info("%d arguments for myintarray.\n", arr_argc); + + pr_info("Module avec paramètre chargé.\n"); + return 0; +} + +static void __exit module_params_exit(void) { + pr_info("Module avec paramètre déchargé.\n"); +} + +module_init(module_params_init); +module_exit(module_params_exit); + +MODULE_LICENSE("MIT License"); +MODULE_AUTHOR("Florian RICHER"); +MODULE_DESCRIPTION("Un module noyau avec paramètre déchargé."); +MODULE_VERSION("1.0"); diff --git a/03_process_monitor/Makefile b/03_character_device/Makefile similarity index 100% rename from 03_process_monitor/Makefile rename to 03_character_device/Makefile diff --git a/02_character_device/README.md b/03_character_device/README.md similarity index 100% rename from 02_character_device/README.md rename to 03_character_device/README.md diff --git a/02_character_device/test_module.c b/03_character_device/test_module.c similarity index 100% rename from 02_character_device/test_module.c rename to 03_character_device/test_module.c diff --git a/04_packet_filter/Makefile b/04_process_monitor/Makefile similarity index 100% rename from 04_packet_filter/Makefile rename to 04_process_monitor/Makefile diff --git a/03_process_monitor/test_module.c b/04_process_monitor/test_module.c similarity index 100% rename from 03_process_monitor/test_module.c rename to 04_process_monitor/test_module.c diff --git a/05_packet_filter/Makefile b/05_packet_filter/Makefile new file mode 100644 index 0000000..b909b3c --- /dev/null +++ b/05_packet_filter/Makefile @@ -0,0 +1,7 @@ +obj-m += test_module.o + +all: + make -C $(LINUX_MODULES_FOLDER)/build M=$(PWD) modules + +clean: + make -C $(LINUX_MODULES_FOLDER)/build M=$(PWD) clean diff --git a/04_packet_filter/test_module.c b/05_packet_filter/test_module.c similarity index 100% rename from 04_packet_filter/test_module.c rename to 05_packet_filter/test_module.c diff --git a/README.md b/README.md index 334dd90..b9b21d2 100644 --- a/README.md +++ b/README.md @@ -54,6 +54,7 @@ sudo rmmod [module_name].ko - https://www.kernel.org/doc/html/latest/ - https://elixir.bootlin.com/linux/v6.13/source/ - https://static.lwn.net/images/pdf/LDD3/ch01.pdf +- https://sysprog21.github.io/lkmpg ## Notes