| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- // 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");
- }
- }
|