rust: DebugFS Bindings
Get series with b4
b4 am [email protected] change-id 20250428-debugfs-rust-3cd5c97eb7d1Versions newest first
- v11 Latest7 patches 30 repliesIn review
- v107 patches 9 repliesSuperseded
- v95 patches 17 repliesSuperseded
Earlier versions · 8
| Version | Posted | Patches | Replies | Status |
|---|---|---|---|---|
| v8 | 6 patches | 42 replies | Superseded | |
| v7 | 6 patches | 3 replies | Superseded | |
| v6 | 5 patches | 9 replies | Superseded | |
| v5 | 4 patches | 54 replies | Superseded | |
| v4 | 4 patches | 6 replies | Superseded | |
| v3 | 4 patches | 18 replies | Superseded | |
| v2 | 4 patches | 10 replies | Superseded | |
| v1 | 8 patches | 22 replies | Superseded |
Changes in v11 from the cover letter
- Rephrased comments/docs based on list feedback
- Switched longer polymorphic declarations to use where clauses
- Switched TI: PinInit to impl PinInit (this was previously required
for use<>
- Keep Scope private until the scoped interface is added
- Render -> Writer, UpdateFromSlice -> Reader
- Documented that Debug format is subject to change
- Link to v10: https://lore.kernel.org/r/[email protected]
Patches in v11 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/7 | rust: debugfs: Add initial support for directoriesMAINTAINERS rust/ rust/ +2 more | +147 | 0 replies | |
| 2/7 | rust: debugfs: Add support for read-only filesrust/ rust/ rust/ +1 more | +350 | 23 replies | |
| 3/7 | rust: debugfs: Add support for writable filesrust/ rust/ rust/ | +216 | 0 replies | |
| 4/7 | rust: debugfs: Add support for callback-based filesrust/ rust/ rust/ | +219 | 0 replies | |
| 5/7 | samples: rust: Add debugfs sample driverMAINTAINERS samples/ samples/ +1 more | +164 | 5 replies | |
| 6/7 | rust: debugfs: Add support for scoped directoriesrust/ rust/ | +320 | 0 replies | |
| 7/7 | samples: rust: Add scoped debugfs sample driverMAINTAINERS samples/ samples/ +1 more | +147 | 1 reply |
Reviews trailers per patch
None of the 7 patches has a Reviewed-by or Acked-by.
| Patch | Dirk Behme |
|---|---|
| Series | T-b |
| 1/7 | |
| 2/7 | |
| 3/7 | |
| 4/7 | |
| 5/7 | |
| 6/7 | |
| 7/7 |
Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.
Cover letter [PATCH v11 0/7] rust: DebugFS Bindings
This series provides safe DebugFS bindings for Rust, with sample modules using them.
---
Changes in v11:
- Rephrased comments/docs based on list feedback
- Switched longer polymorphic declarations to use where clauses
- Switched TI: PinInit to impl PinInit (this was previously required
for use<>
- Keep Scope private until the scoped interface is added
- Render -> Writer, UpdateFromSlice -> Reader
- Documented that Debug format is subject to change
- Link to v10: https://lore.kernel.org/r/[email protected]
Changes in v10:
- Introduced Scoped to show how either a File or Dir can be bound to
data
- Remove use of use<> for MSRV compatibility
- Added Write support
- Added more complex sample driver using scoped interface
- Updated original sample driver to use writes to drive mutation
- Added FileOps<T> (only for DebugFS, not a kernel-wide abstraction)
to decrease needed unsafe for keeping vtables paired to types.
- Centralized dentry lifecycle management to entry.rs.
- Link to v9: https://lore.kernel.org/r/[email protected]
Changes in v9:
- Switched to PinInit backing instead of ForeignOwnable
- Changed sample to be a platform driver
- Exported a static property
- Demonstrated runtime mutation in platform driver (inc_counter)
- Demonstrated how driver code would interact with data structures
exported through DebugFS (Wrapper)
- Link to v8: https://lore.kernel.org/r/[email protected]
Changes in v8:
- Switched from casts to core::from_{ref, mut} in type change
- Link to v7: https://lore.kernel.org/r/[email protected]
Changes in v7:
- Rewrote entry::Entry -> Entry
- Use c_int and c_void from kernel prelude rather than core
- Removed unnecessary display_open cast
- Switched from Deref + an explicit box to ForeignOwnable for
attaching owned data.
- Made &'static and &'static mut implement ForeignOwnable
- Swapped "driver" to "module" in sample code
- Link to v6: https://lore.kernel.org/r/[email protected]
Changes in v6:
- Replaced explicit lifetimes with children keeping their parents alive.
- Added support for attaching owned data.
- Removed recomendation to only keep root handles and handles you want
to delete around.
- Refactored some code into separate files to improve clarity.
- Link to v5: https://lore.kernel.org/r/[email protected]
Changes in v5:
- Made Dir + File wrappers around Entry
- All functions return owning handles. To discard without drop, use forget. To keep a handle without drop, use ManuallyDrop.
- Fixed bugs around not(CONFIG_DEBUG_FS)
- Removed unnecessary addr_of!
- Link to v4: https://lore.kernel.org/r/[email protected]
Changes in v4:
- Remove SubDir, replace with type-level constant.
- Add lifetime to Dir to prevent subdirectories and files from outliving their parents and triggering an Oops when accessed.
- Split unsafe blocks with two calls into two blocks
- Access private field through direct pointer dereference, avoiding creation of a reference to it.
- Notably not changed - owning/non-owning handle defaults. The best read
I had from the thread was to continue with this mode, but I'm willing
to change if need be.
- Comment changes
- More comment markdown
- Remove scopes from examples
- Put as_ptr properties into a # Guarantees section.
- Link to v3: https://lore.kernel.org/r/[email protected]
Changes in v3:
- Split Dir into Dir/SubDir/File to improve API.
- Add "." to end of all comments.
- Convert INVARIANT to # Invariants on types.
- Add backticks everywhere I found variables/types in my comments.
- Promoted invariant comment to doc comment.
- Extended sample commenting to make it clearer what is happening.
- Link to v2: https://lore.kernel.org/r/[email protected]
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/[email protected]
---
Matthew Maurer (7):
rust: debugfs: Add initial support for directories
rust: debugfs: Add support for read-only files
rust: debugfs: Add support for writable files
rust: debugfs: Add support for callback-based files
samples: rust: Add debugfs sample driver
rust: debugfs: Add support for scoped directories
samples: rust: Add scoped debugfs sample driver
MAINTAINERS | 4 + rust/bindings/bindings_helper.h | 1 + rust/kernel/debugfs.rs | 594 +++++++++++++++++++++++++++++++ rust/kernel/debugfs/callback_adapters.rs | 122 +++++++ rust/kernel/debugfs/entry.rs | 164 +++++++++ rust/kernel/debugfs/file_ops.rs | 247 +++++++++++++ rust/kernel/debugfs/traits.rs | 102 ++++++ rust/kernel/lib.rs | 1 + samples/rust/Kconfig | 22 ++ samples/rust/Makefile | 2 + samples/rust/rust_debugfs.rs | 151 ++++++++ samples/rust/rust_scoped_debugfs.rs | 134 +++++++ 12 files changed, 1544 insertions(+)
---
base-commit: f3c5631f70e434e318c44001e2417d4770f06cd0
change-id: 20250428-debugfs-rust-3cd5c97eb7d1
Best regards,
Signature · 1 line
Matthew Maurer <[email protected]>