diff options
Diffstat (limited to 'drivers/char/rust_example/src/lib.rs')
-rw-r--r-- | drivers/char/rust_example/src/lib.rs | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/drivers/char/rust_example/src/lib.rs b/drivers/char/rust_example/src/lib.rs new file mode 100644 index 000000000000..9f542d6929db --- /dev/null +++ b/drivers/char/rust_example/src/lib.rs @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: GPL-2.0 + +#![no_std] + +use kernel::prelude::*; + +struct RustExample { + message: String, +} + +impl KernelModule for RustExample { + fn init() -> KernelResult<Self> { + println!("Rust Example (init)"); + println!("Am I built-in? {}", !cfg!(module)); + Ok(RustExample { + message: "on the heap!".to_owned(), + }) + } +} + +impl Drop for RustExample { + fn drop(&mut self) { + println!("My message is {}", self.message); + println!("Rust Example (exit)"); + } +} + +kernel_module!( + RustExample, + author: b"Rust for Linux Contributors", + description: b"An example kernel module written in Rust", + license: b"GPL v2" +); |