rust-for-linux.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 00/13] `Zeroable` improvements & bindings integration
@ 2025-05-23 14:50 Benno Lossin
  2025-05-23 14:50 ` [PATCH v2 01/13] rust: pin-init: rename `zeroed` to `init_zeroed` Benno Lossin
                   ` (13 more replies)
  0 siblings, 14 replies; 27+ messages in thread
From: Benno Lossin @ 2025-05-23 14:50 UTC (permalink / raw)
  To: Miguel Ojeda, Alex Gaynor, Boqun Feng, Gary Guo,
	Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl,
	Trevor Gross, Danilo Krummrich
  Cc: Lyude Paul, rust-for-linux

Depends on the pin-init test & CI fixes sync [1].

This came from a discussion at [2]. And I added some more useful parts
to the original idea.

I'm not sure on the impact of build times and rust-analyzer. We're
adding a derive macro to every struct and union emitted by bindgen.
Building using my test-config took 27.7s before and 28.2s after this
change, but those are only two runs on my machine with a very reduced
config (that enables all Rust code that we have at the moment).

Maybe we have to reevaluate this when more C code is scanned by bindgen.

[1]: https://rust-for-linux.zulipchat.com/#narrow/channel/291565-Help/topic/Zeroable.20trait.20for.20C.20structs/with/509711564
[2]: https://lore.kernel.org/all/20250523125424.192843-1-lossin@kernel.org

Changelog
=========
* v2:
  - added patches with more extensive pin-init changes to `Zeroable` &
    related methods. for the upstream PR, see
    https://github.com/Rust-for-Linux/pin-init/pull/56
  - added patches replacing usage of `mem::zeroed` and
    `MaybeUninit::zeroed().assume_init()` with the new
    `pin_init::zeroed`
  - fix rust-analyzer support 
  - use import in `{uapi,bindings}/lib.rs` to avoid the `pin_init::`
    prefix
* v1: https://lore.kernel.org/all/20250520192307.259142-1-lossin@kernel.org

Benno Lossin (13):
  rust: pin-init: rename `zeroed` to `init_zeroed`
  rust: pin-init: add `Zeroable::init_zeroed`
  rust: pin-init: add `zeroed()` & `Zeroable::zeroed()` functions
  rust: pin-init: implement `ZeroableOption` for `&T` and `&mut T`
  rust: pin-init: change `impl Zeroable for Option<NonNull<T>>` to
    `ZeroableOption for NonNull<T>`
  rust: pin-init: implement `ZeroableOption` for function pointers with
    up to 20 arguments
  rust: add `pin-init` as a dependency to `bindings` and `uapi`
  rust: derive `Zeroable` for all structs & unions generated by bindgen
    where possible
  rust: miscdevice: replace `MaybeUninit::zeroed().assume_init` with
    `pin_init::zeroed`
  rust: phy: replace `MaybeUninit::zeroed().assume_init` with
    `pin_init::zeroed`
  rust: block: replace `core::mem::zeroed` with `pin_init::zeroed`
  rust: of: replace `core::mem::zeroed` with `pin_init::zeroed`
  rust: security: replace `core::mem::zeroed` with `pin_init::zeroed`

 rust/Makefile                                 |   6 +-
 rust/bindgen_parameters                       |   4 +
 rust/bindings/lib.rs                          |   8 ++
 rust/kernel/block/mq/gen_disk.rs              |   3 +-
 rust/kernel/block/mq/tag_set.rs               |   4 +-
 rust/kernel/init.rs                           |   8 +-
 rust/kernel/miscdevice.rs                     |   8 +-
 rust/kernel/net/phy.rs                        |   4 +-
 rust/kernel/of.rs                             |   4 +-
 rust/kernel/security.rs                       |   3 +-
 rust/pin-init/README.md                       |   2 +-
 rust/pin-init/examples/big_struct_in_place.rs |   4 +-
 rust/pin-init/src/lib.rs                      | 120 +++++++++++++++---
 rust/pin-init/src/macros.rs                   |  16 +--
 rust/uapi/lib.rs                              |   2 +
 scripts/generate_rust_analyzer.py             |   4 +-
 16 files changed, 147 insertions(+), 53 deletions(-)


base-commit: ae8b3a83fb9de394f609035041cd7a668fda2ab3
prerequisite-patch-id: 8d7ade67c2e5189bf8a2c91253d925e25744cba5
prerequisite-patch-id: 0ebbd4a86bebeff23257870db92a1b0fe017c481
prerequisite-patch-id: 1437fc7adeff6e13abd433594da923272b9388bf
-- 
2.49.0


^ permalink raw reply	[flat|nested] 27+ messages in thread

end of thread, other threads:[~2025-08-14  9:09 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-05-23 14:50 [PATCH v2 00/13] `Zeroable` improvements & bindings integration Benno Lossin
2025-05-23 14:50 ` [PATCH v2 01/13] rust: pin-init: rename `zeroed` to `init_zeroed` Benno Lossin
2025-05-27 21:54   ` Benoît du Garreau
2025-05-28 15:18     ` Benno Lossin
2025-05-23 14:50 ` [PATCH v2 02/13] rust: pin-init: add `Zeroable::init_zeroed` Benno Lossin
2025-05-23 14:50 ` [PATCH v2 03/13] rust: pin-init: add `zeroed()` & `Zeroable::zeroed()` functions Benno Lossin
2025-08-08  9:31   ` Andreas Hindborg
2025-08-14  9:09     ` Benno Lossin
2025-05-23 14:51 ` [PATCH v2 04/13] rust: pin-init: implement `ZeroableOption` for `&T` and `&mut T` Benno Lossin
2025-05-23 14:51 ` [PATCH v2 05/13] rust: pin-init: change `impl Zeroable for Option<NonNull<T>>` to `ZeroableOption for NonNull<T>` Benno Lossin
2025-05-23 14:51 ` [PATCH v2 06/13] rust: pin-init: implement `ZeroableOption` for function pointers with up to 20 arguments Benno Lossin
2025-05-23 14:51 ` [PATCH v2 07/13] rust: add `pin-init` as a dependency to `bindings` and `uapi` Benno Lossin
2025-05-23 14:51 ` [PATCH v2 08/13] rust: derive `Zeroable` for all structs & unions generated by bindgen where possible Benno Lossin
2025-05-23 14:51 ` [PATCH v2 09/13] rust: miscdevice: replace `MaybeUninit::zeroed().assume_init` with `pin_init::zeroed` Benno Lossin
2025-05-23 14:51 ` [PATCH v2 10/13] rust: phy: " Benno Lossin
2025-05-23 14:51 ` [PATCH v2 11/13] rust: block: replace `core::mem::zeroed` " Benno Lossin
2025-08-08  9:35   ` Andreas Hindborg
2025-08-08 20:45     ` Benno Lossin
2025-08-10  7:21       ` Andreas Hindborg
2025-08-10  7:40         ` Benno Lossin
2025-05-23 14:51 ` [PATCH v2 12/13] rust: of: " Benno Lossin
2025-05-23 14:51 ` [PATCH v2 13/13] rust: security: " Benno Lossin
2025-06-09 19:53 ` [PATCH v2 00/13] `Zeroable` improvements & bindings integration Benno Lossin
2025-07-27 17:21   ` Benno Lossin
2025-07-27 18:17     ` Miguel Ojeda
2025-07-27 20:38       ` Benno Lossin
2025-07-27 21:20         ` Miguel Ojeda

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).