rust: init: add `PinnedDrop` trait and macros
The `PinnedDrop` trait that facilitates destruction of pinned types. It has to be implemented via the `#[pinned_drop]` macro, since the `drop` function should not be called by normal code, only by other destructors. It also only works on structs that are annotated with `#[pin_data(PinnedDrop)]`. Co-developed-by:Gary Guo <gary@garyguo.net> Signed-off-by:
Gary Guo <gary@garyguo.net> Signed-off-by:
Benno Lossin <benno.lossin@proton.me> Reviewed-by:
Alice Ryhl <aliceryhl@google.com> Reviewed-by:
Andreas Hindborg <a.hindborg@samsung.com> Link: https://lore.kernel.org/r/20230408122429.1103522-10-y86-dev@protonmail.com Signed-off-by:
Miguel Ojeda <ojeda@kernel.org>
Showing
- rust/kernel/init.rs 111 additions, 0 deletionsrust/kernel/init.rs
- rust/kernel/init/__internal.rs 15 additions, 0 deletionsrust/kernel/init/__internal.rs
- rust/kernel/init/macros.rs 264 additions, 0 deletionsrust/kernel/init/macros.rs
- rust/macros/lib.rs 49 additions, 0 deletionsrust/macros/lib.rs
- rust/macros/pinned_drop.rs 49 additions, 0 deletionsrust/macros/pinned_drop.rs
Loading