rust_minimal.rs 876 B

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