| // SPDX-License-Identifier: GPL-2.0 | |
| //! Rust minimal sample. | |
| use kernel::prelude::*; | |
| module! { | |
| type: RustMinimal, | |
| name: "rust_minimal", | |
| authors: ["Rust for Linux Contributors"], | |
| description: "Rust minimal sample", | |
| license: "GPL", | |
| params: { | |
| test_parameter: i64 { | |
| default: 1, | |
| description: "This parameter has a default of 1", | |
| }, | |
| }, | |
| } | |
| struct RustMinimal { | |
| numbers: KVec<i32>, | |
| } | |
| impl kernel::Module for RustMinimal { | |
| fn init(_module: &'static ThisModule) -> Result<Self> { | |
| pr_info!("Rust minimal sample (init)\n"); | |
| pr_info!("Am I built-in? {}\n", !cfg!(MODULE)); | |
| pr_info!( | |
| "test_parameter: {}\n", | |
| *module_parameters::test_parameter.value() | |
| ); | |
| let mut numbers = KVec::new(); | |
| numbers.push(72, GFP_KERNEL)?; | |
| numbers.push(108, GFP_KERNEL)?; | |
| numbers.push(200, GFP_KERNEL)?; | |
| Ok(RustMinimal { numbers }) | |
| } | |
| } | |
| impl Drop for RustMinimal { | |
| fn drop(&mut self) { | |
| pr_info!("My numbers are {:?}\n", self.numbers); | |
| pr_info!("Rust minimal sample (exit)\n"); | |
| } | |
| } |