rust: list: add ListArcField
authorAlice Ryhl <aliceryhl@google.com>
Wed, 14 Aug 2024 08:05:29 +0000 (08:05 +0000)
committerMiguel Ojeda <ojeda@kernel.org>
Fri, 23 Aug 2024 04:26:57 +0000 (06:26 +0200)
commitb204bbc53f958fc3119d63bf2cda5a526e7267a4
tree4c1e3a17d1439f484b3abc71ef537d1bb1d1120f
parent2003c04b059759b0ec3bff108f24ded9de86a726
rust: list: add ListArcField

One way to explain what `ListArc` does is that it controls exclusive
access to the prev/next pointer field in a refcounted object. The
feature of having a special reference to a refcounted object with
exclusive access to specific fields is useful for other things, so
provide a general utility for that.

This is used by Rust Binder to keep track of which processes have a
reference to a given node. This involves an object for each process/node
pair, that is referenced by both the process and the node. For some
fields in this object, only the process's reference needs to access
them (and it needs mutable access), so Binder uses a ListArc to give the
process's reference exclusive access.

Reviewed-by: Benno Lossin <benno.lossin@proton.me>
Signed-off-by: Alice Ryhl <aliceryhl@google.com>
Link: https://lore.kernel.org/r/20240814-linked-list-v5-10-f5f5e8075da0@google.com
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
rust/kernel/list.rs
rust/kernel/list/arc_field.rs [new file with mode: 0644]