[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20230719141918.543938-1-benno.lossin@proton.me>
Date: Wed, 19 Jul 2023 14:20:09 +0000
From: Benno Lossin <benno.lossin@...ton.me>
To: Miguel Ojeda <ojeda@...nel.org>,
Wedson Almeida Filho <wedsonaf@...il.com>,
Alex Gaynor <alex.gaynor@...il.com>
Cc: Boqun Feng <boqun.feng@...il.com>, Gary Guo <gary@...yguo.net>,
Björn Roy Baron <bjorn3_gh@...tonmail.com>,
Benno Lossin <benno.lossin@...ton.me>,
Alice Ryhl <aliceryhl@...gle.com>,
Andreas Hindborg <nmi@...aspace.dk>,
rust-for-linux@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: [PATCH v2 00/12] Quality of life improvements for pin-init
This patch series adds several improvements to the pin-init api:
- a derive macro for the `Zeroable` trait,
- makes hygiene of fields in initializers behave like normal struct
initializers would behave,
- prevent stackoverflow without optimizations
- add `..Zeroable::zeroed()` syntax to zero missing fields.
- support arbitrary paths in initializer macros
This is the second version of this patch series.
* v1: https://lore.kernel.org/rust-for-linux/20230624092330.157338-1-benno.lossin@proton.me/
Changes not present on modified commits:
v1 -> v2:
- implement `Zeroable` for `Opaque`,
- remove blanket impl of `PinInit` for `Init` and make it a supertrait
instead,
- add `{pin_}chain` functions to execute code after initialization,
- update the example macro expansion
Benno Lossin (12):
rust: init: consolidate init macros
rust: add derive macro for `Zeroable`
rust: init: make guards in the init macros hygienic
rust: init: wrap type checking struct initializers in a closure
rust: init: make initializer values inaccessible after initializing
rust: init: add `..Zeroable::zeroed()` syntax for zeroing all missing
fields
rust: init: Add functions to create array initializers
rust: init: add support for arbitrary paths in init macros
rust: init: implement Zeroable for Opaque<T>
rust: init: make `PinInit<T, E>` a supertrait of `Init<T, E>`
rust: init: add `{pin_}chain` functions to `{Pin}Init<T, E>`
rust: init: update expanded macro explanation
rust/kernel/init.rs | 633 ++++++++++++++-------------------
rust/kernel/init/__internal.rs | 39 +-
rust/kernel/init/macros.rs | 510 +++++++++++++++++++++++---
rust/kernel/prelude.rs | 2 +-
rust/kernel/types.rs | 2 +
rust/macros/lib.rs | 20 ++
rust/macros/quote.rs | 6 +
rust/macros/zeroable.rs | 25 ++
8 files changed, 784 insertions(+), 453 deletions(-)
create mode 100644 rust/macros/zeroable.rs
base-commit: 6946437838b0ec7c976252f5d1872d4d8b679515
--
2.41.0
Powered by blists - more mailing lists