summaryrefslogtreecommitdiff
path: root/samples/rust/rust_driver_faux.rs
diff options
context:
space:
mode:
authorLyude Paul <lyude@redhat.com>2025-02-10 15:30:26 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2025-02-13 18:58:58 +0300
commit78418f300d3999f1cf8a9ac71065bf2eca61f4dd (patch)
treeb3d4fdf6b75576344bd56c5d8e8100a69cc4efa3 /samples/rust/rust_driver_faux.rs
parent35fa2d88ca9481e5caf533d58b99ca259c63b2fe (diff)
downloadlinux-78418f300d3999f1cf8a9ac71065bf2eca61f4dd.tar.xz
rust/kernel: Add faux device bindings
This introduces a module for working with faux devices in rust, along with adding sample code to show how the API is used. Unlike other types of devices, we don't provide any hooks for device probe/removal - since these are optional for the faux API and are unnecessary in rust. Signed-off-by: Lyude Paul <lyude@redhat.com> Cc: MaĆ­ra Canal <mairacanal@riseup.net> Cc: Danilo Krummrich <dakr@kernel.org> Cc: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com> Acked-by: Danilo Krummrich <dakr@kernel.org> Link: https://lore.kernel.org/r/2025021026-exert-accent-b4c6@gregkh Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'samples/rust/rust_driver_faux.rs')
-rw-r--r--samples/rust/rust_driver_faux.rs29
1 files changed, 29 insertions, 0 deletions
diff --git a/samples/rust/rust_driver_faux.rs b/samples/rust/rust_driver_faux.rs
new file mode 100644
index 000000000000..048c6cb98b29
--- /dev/null
+++ b/samples/rust/rust_driver_faux.rs
@@ -0,0 +1,29 @@
+// SPDX-License-Identifier: GPL-2.0-only
+
+//! Rust faux device sample.
+
+use kernel::{c_str, faux, prelude::*, Module};
+
+module! {
+ type: SampleModule,
+ name: "rust_faux_driver",
+ author: "Lyude Paul",
+ description: "Rust faux device sample",
+ license: "GPL",
+}
+
+struct SampleModule {
+ _reg: faux::Registration,
+}
+
+impl Module for SampleModule {
+ fn init(_module: &'static ThisModule) -> Result<Self> {
+ pr_info!("Initialising Rust Faux Device Sample\n");
+
+ let reg = faux::Registration::new(c_str!("rust-faux-sample-device"))?;
+
+ dev_info!(reg.as_ref(), "Hello from faux device!\n");
+
+ Ok(Self { _reg: reg })
+ }
+}