try implement 02_module_params in rust

params: in module! macro don't exist yet
This commit is contained in:
Florian RICHER 2025-03-02 17:51:18 +01:00
parent 0d471911dd
commit a407e656b6
Signed by: florian.richer
GPG key ID: C73D37CBED7BFC77
4 changed files with 43 additions and 10 deletions

View file

@ -1,24 +1,24 @@
use kernel::prelude::*;
module! {
type: RustOutOfTree,
name: "test_module",
type: BasicModule,
name: "basic_module",
author: "Florian RICHER <florian.richer@protonmail.com>",
description: "Un module noyau qui affiche un message",
license: "GPL",
}
struct RustOutOfTree;
struct BasicModule;
impl kernel::Module for RustOutOfTree {
impl kernel::Module for BasicModule {
fn init(_module: &'static ThisModule) -> Result<Self> {
pr_info!("Bonjour! Le module est chargé.\n");
Ok(RustOutOfTree)
Ok(BasicModule)
}
}
impl Drop for RustOutOfTree {
impl Drop for BasicModule {
fn drop(&mut self) {
pr_info!("Au revoir! Le module est déchargé.\n");
}

View file

@ -1,4 +1,7 @@
obj-m += test_module.o
MODULE_NAME = module_params
obj-m += $(MODULE_NAME)_in_c.o
obj-m += $(MODULE_NAME)_in_rust.o
all:
make -C $(LINUX_MODULES_FOLDER)/build M=$(PWD) modules

View file

@ -37,13 +37,13 @@ static int __init module_params_init(void)
pr_info("%d arguments for myintarray.\n", arr_argc);
pr_info("Module avec paramètre chargé.\n");
pr_info("Module avec paramètres chargé.\n");
return 0;
}
static void __exit module_params_exit(void)
{
pr_info("Module avec paramètre déchargé.\n");
pr_info("Module avec paramètres déchargé.\n");
}
module_init(module_params_init);
@ -51,5 +51,5 @@ module_exit(module_params_exit);
MODULE_LICENSE("MIT License");
MODULE_AUTHOR("Florian RICHER <florian.richer@protonmail.com>");
MODULE_DESCRIPTION("Un module noyau avec paramètre déchargé.");
MODULE_DESCRIPTION("Un module noyau avec paramètres.");
MODULE_VERSION("1.0");

View file

@ -0,0 +1,30 @@
use kernel::prelude::*;
module! {
type: ModuleWithParams,
name: "test_module",
author: "Florian RICHER <florian.richer@protonmail.com>",
description: "Un module noyau avec paramètres déchargé.",
license: "GPL"
// Syntax as below not supported yet see https://patchew.org/linux/20250218-module-params-v3-v7-0-5e1afabcac1b%40kernel.org/
// params: type {
// default: default_value,
// description: "Description",
// }
}
struct ModuleWithParams;
impl kernel::Module for ModuleWithParams {
fn init(_module: &'static ThisModule) -> Result<Self> {
pr_info!("Module avec paramètres chargé.\n");
Ok(ModuleWithParams)
}
}
impl Drop for ModuleWithParams {
fn drop(&mut self) {
pr_info!("Module avec paramètres.\n");
}
}