56 lines · 1.4 KB · Rust
RawDownload
// 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",        },        test_bool_parameter: bool {            default: false,            description: "This boolean parameter defaults to false",        },    },} 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()        );        pr_info!(            "test_bool_parameter: {}\n",            module_parameters::test_bool_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");    }}