All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v6 0/5] New trait OwnableRefCounted for ARef<->Owned conversion.
@ 2025-03-10  8:49 Oliver Mangold
  2025-03-10  8:49 ` [PATCH v6 1/5] rust: types: Add Ownable/Owned types Oliver Mangold
                   ` (4 more replies)
  0 siblings, 5 replies; 11+ messages in thread
From: Oliver Mangold @ 2025-03-10  8:49 UTC (permalink / raw)
  To: Miguel Ojeda, Alex Gaynor, Boqun Feng, Gary Guo,
	Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl,
	Trevor Gross, Asahi Lina
  Cc: rust-for-linux, linux-kernel, Oliver Mangold

This allows to convert between ARef<T> and Owned<T> by
implementing the new trait OwnedRefCounted.

This way we will have a shared/unique reference counting scheme
for types with built-in refcounts in analogy to Arc/UniqueArc.

Signed-off-by: Oliver Mangold <oliver.mangold@pm.me>
---
Changes in v6:
- Changed comments/formatting as suggested by Miguel Ojeda
- Included and used new config flag RUSTC_HAS_DO_NOT_RECOMMEND,
  thus no changes to types.rs will be needed when the attribute
  becomes available.
- Fixed commit message for Owned patch.
- Link to v5: https://lore.kernel.org/r/20250307-unique-ref-v5-0-bffeb633277e@pm.me

Changes in v5:
- Rebase the whole thing on top of the Ownable/Owned traits by Asahi Lina.
- Rename AlwaysRefCounted to RefCounted and make AlwaysRefCounted a
  marker trait instead to allow to obtain an ARef<T> from an &T,
  which (as Alice pointed out) is unsound when combined with UniqueRef/Owned.
- Change the Trait design and naming to implement this feature,
  UniqueRef/UniqueRefCounted is dropped in favor of Ownable/Owned and
  OwnableRefCounted is used to provide the functions to convert
  between Owned and ARef.
- Link to v4: https://lore.kernel.org/r/20250305-unique-ref-v4-1-a8fdef7b1c2c@pm.me

Changes in v4:
- Just a minor change in naming by request from Andreas Hindborg,
  try_shared_to_unique() -> try_from_shared(),
  unique_to_shared() -> into_shared(),
  which is more in line with standard Rust naming conventions.
- Link to v3: https://lore.kernel.org/r/Z8Wuud2UQX6Yukyr@mango

---
Asahi Lina (1):
      rust: types: Add Ownable/Owned types

Miguel Ojeda (1):
      rust: kbuild: provide `RUSTC_HAS_DO_NOT_RECOMMEND` symbol

Oliver Mangold (3):
      rust: make Owned::into_raw() and Owned::from_raw() public
      rust: rename AlwaysRefCounted to RefCounted
      rust: adding OwnableRefCounted and SimpleOwnableRefCounted

 init/Kconfig                    |   3 +
 rust/kernel/block/mq/request.rs |  10 +-
 rust/kernel/cred.rs             |   8 +-
 rust/kernel/device.rs           |   8 +-
 rust/kernel/fs/file.rs          |  10 +-
 rust/kernel/pid_namespace.rs    |   8 +-
 rust/kernel/task.rs             |   6 +-
 rust/kernel/types.rs            | 429 ++++++++++++++++++++++++++++++++++++++--
 8 files changed, 451 insertions(+), 31 deletions(-)
---
base-commit: 4b2ee22fe32ea9b255926effbb6f26450607c391
change-id: 20250305-unique-ref-29fcd675f9e9

Best regards,
-- 
Oliver Mangold <oliver.mangold@pm.me>



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

end of thread, other threads:[~2025-03-10 10:44 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-10  8:49 [PATCH v6 0/5] New trait OwnableRefCounted for ARef<->Owned conversion Oliver Mangold
2025-03-10  8:49 ` [PATCH v6 1/5] rust: types: Add Ownable/Owned types Oliver Mangold
2025-03-10  9:50   ` Alice Ryhl
2025-03-10  8:49 ` [PATCH v6 2/5] rust: make Owned::into_raw() and Owned::from_raw() public Oliver Mangold
2025-03-10  9:50   ` Alice Ryhl
2025-03-10 10:00     ` Oliver Mangold
2025-03-10 10:32       ` Danilo Krummrich
2025-03-10 10:44         ` Oliver Mangold
2025-03-10  8:49 ` [PATCH v6 3/5] rust: rename AlwaysRefCounted to RefCounted Oliver Mangold
2025-03-10  8:50 ` [PATCH v6 4/5] rust: kbuild: provide `RUSTC_HAS_DO_NOT_RECOMMEND` symbol Oliver Mangold
2025-03-10  8:50 ` [PATCH v6 5/5] rust: adding OwnableRefCounted and SimpleOwnableRefCounted Oliver Mangold

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.