blob: 2a9eaab62d1ca73bfa004b61a18c647e3f15e851 [file] [log] [blame]
Miguel Ojedae4fc6582021-07-03 17:21:12 +02001// SPDX-License-Identifier: GPL-2.0
2
3//! Rust minimal sample.
4
5use kernel::prelude::*;
6
7module! {
8 type: RustMinimal,
Gary Guob13c9882022-11-10 17:41:19 +01009 name: "rust_minimal",
10 author: "Rust for Linux Contributors",
11 description: "Rust minimal sample",
12 license: "GPL",
Miguel Ojedae4fc6582021-07-03 17:21:12 +020013}
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();
Wedson Almeida Filho5ab560c2024-03-27 22:36:00 -030025 numbers.push(72, GFP_KERNEL)?;
26 numbers.push(108, GFP_KERNEL)?;
27 numbers.push(200, GFP_KERNEL)?;
Miguel Ojedae4fc6582021-07-03 17:21:12 +020028
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}