1 | // SPDX-License-Identifier: GPL-2.0 |
2 | |
3 | //! Rust minimal sample. |
4 | |
5 | use kernel::prelude::*; |
6 | |
7 | module! { |
8 | type: RustMinimal, |
9 | name: "rust_minimal" , |
10 | author: "Rust for Linux Contributors" , |
11 | description: "Rust minimal sample" , |
12 | license: "GPL" , |
13 | } |
14 | |
15 | struct RustMinimal { |
16 | numbers: Vec<i32>, |
17 | } |
18 | |
19 | impl 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 | |
33 | impl 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 | |