[PATCH v2 0/4] rust: DebugFS Bindings
From: Matthew Maurer
Date: Wed Apr 30 2025 - 19:32:18 EST
This series provides safe DebugFS bindings for Rust, with a sample
driver using them.
This series currently only supports referencing `'static` lifetime
objects, because we need to know the objects outlive the DebugFS files.
A subsequent series may be able to relax this.
A few points that might be worth discussing on the API here:
1. The handles returned by directory and file creation currently remove
themselves when they go out of scope. This behavior can be suppressed
via `.keep()`. We could flip it to the other sense, and require that
a returned handle be *explicitly* upconverted to get removed on drop.
If we did this, we could consider making a different default for
`subdir` vs `Dir::new`. The downside of doing this would be more
complex types in the interface.
2. File creation currently returns a handle to preserve expressiveness
(the ability to delete a file without deleting the directory it's
in). I see (e.g. in ceph) explicit deletion of files, but this
appears to be legacy code from before `recursive_remove` as opposed
to wanting manual deletion. We could choose not to provide a handle
here.
Signed-off-by: Matthew Maurer <mmaurer@xxxxxxxxxx>
---
Changes in v2:
- Drop support for builder / pinned bindings in initial series
- Remove `ARef` usage to abstract the dentry nature of handles
- Remove error handling to discourage users from caring whether DebugFS
is enabled.
- Support CONFIG_DEBUG_FS=n while leaving the API available
- Fixed mistaken decimal/octal mixup
- Doc/comment cleanup
- Link to v1: https://lore.kernel.org/r/20250429-debugfs-rust-v1-0-6b6e7cb7929f@xxxxxxxxxx
---
Matthew Maurer (4):
rust: debugfs: Bind DebugFS directory creation
rust: debugfs: Bind file creation for long-lived Display
rust: debugfs: Support format hooks
rust: samples: Add debugfs sample
MAINTAINERS | 2 +
rust/bindings/bindings_helper.h | 1 +
rust/kernel/debugfs.rs | 345 ++++++++++++++++++++++++++++++++++++++++
rust/kernel/lib.rs | 1 +
samples/rust/Kconfig | 11 ++
samples/rust/Makefile | 1 +
samples/rust/rust_debugfs.rs | 37 +++++
7 files changed, 398 insertions(+)
---
base-commit: b6a7783d306baf3150ac54cd5124f6e85dd375b0
change-id: 20250428-debugfs-rust-3cd5c97eb7d1
Best regards,
--
Matthew Maurer <mmaurer@xxxxxxxxxx>