All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v5 0/4] New trait OwnableRefCounted for ARef<->Owned conversion.
@ 2025-03-07 10:04 Oliver Mangold
  2025-03-07 10:04 ` [PATCH v5 1/4] rust: types: Add Ownable/Owned types Oliver Mangold
                   ` (3 more replies)
  0 siblings, 4 replies; 14+ messages in thread
From: Oliver Mangold @ 2025-03-07 10:04 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 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

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

 rust/kernel/block/mq/request.rs |  11 +-
 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            | 422 ++++++++++++++++++++++++++++++++++++++--
 7 files changed, 442 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] 14+ messages in thread

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

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-07 10:04 [PATCH v5 0/4] New trait OwnableRefCounted for ARef<->Owned conversion Oliver Mangold
2025-03-07 10:04 ` [PATCH v5 1/4] rust: types: Add Ownable/Owned types Oliver Mangold
2025-03-07 10:04 ` [PATCH v5 2/4] rust: make Owned::into_raw() and Owned::from_raw() public Oliver Mangold
2025-03-07 13:17   ` Miguel Ojeda
2025-03-07 10:04 ` [PATCH v5 3/4] rust: rename AlwaysRefCounted to RefCounted Oliver Mangold
2025-03-07 10:04 ` [PATCH v5 4/4] rust: adding OwnableRefCounted and SimpleOwnableRefCounted Oliver Mangold
2025-03-07 13:16   ` Miguel Ojeda
2025-03-07 13:28     ` Alice Ryhl
2025-03-07 13:53       ` Miguel Ojeda
2025-03-07 15:58         ` Alice Ryhl
2025-03-09 21:47           ` Miguel Ojeda
2025-03-09 21:48           ` [PATCH] rust: kbuild: provide `RUSTC_HAS_DO_NOT_RECOMMEND` symbol Miguel Ojeda
2025-03-09 21:55             ` Miguel Ojeda
2025-03-10  7:08     ` [PATCH v5 4/4] 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.