summaryrefslogtreecommitdiffstats
path: root/drivers/char/rust_example/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/char/rust_example/src/lib.rs')
-rw-r--r--drivers/char/rust_example/src/lib.rs33
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"
+);