1// SPDX-License-Identifier: GPL-2.0 2 3//! Rust minimal sample. 4 5use kernel::prelude::*; 6 7module! { 8 type: RustMinimal, 9 name: "rust_minimal", 10 author: "Rust for Linux Contributors", 11 description: "Rust minimal sample", 12 license: "GPL", 13} 14 15struct RustMinimal { 16 numbers: Vec<i32>, 17} 18 19impl kernel::Module for RustMinimal { 20 fn init(_module: &'static ThisModule) -> Result<Self> { 21 pr_info!("Rust minimal sample (init)\n"); 22 pr_info!("Am I built-in? {}\n", !cfg!(MODULE)); 23 24 let mut numbers = Vec::new(); 25 numbers.try_push(72)?; 26 numbers.try_push(108)?; 27 numbers.try_push(200)?; 28 29 Ok(RustMinimal { numbers }) 30 } 31} 32 33impl Drop for RustMinimal { 34 fn drop(&mut self) { 35 pr_info!("My numbers are {:?}\n", self.numbers); 36 pr_info!("Rust minimal sample (exit)\n"); 37 } 38} 39