]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
rust: sync: atomic: Add Atomic<*{mut,const} T> support
authorBoqun Feng <boqun.feng@gmail.com>
Tue, 3 Mar 2026 20:16:55 +0000 (12:16 -0800)
committerPeter Zijlstra <peterz@infradead.org>
Sun, 8 Mar 2026 10:06:49 +0000 (11:06 +0100)
commitac8f06ade38a49f7725cc219fc6e90d1d4708d2b
treef7989c5aabf221a67ef19b28b11fc00f489b39e5
parent553c02fb588d4310193eba80f75b43b20befd1d2
rust: sync: atomic: Add Atomic<*{mut,const} T> support

Atomic pointer support is an important piece of synchronization
algorithm, e.g. RCU, hence provide the support for that.

Note that instead of relying on atomic_long or the implementation of
`Atomic<usize>`, a new set of helpers (atomic_ptr_*) is introduced for
atomic pointer specifically, this is because ptr2int casting would
lose the provenance of a pointer and even though in theory there are a
few tricks the provenance can be restored, it'll still be a simpler
implementation if C could provide atomic pointers directly. The side
effects of this approach are: we don't have the arithmetic and logical
operations for pointers yet and the current implementation only works
on ARCH_SUPPORTS_ATOMIC_RMW architectures, but these are implementation
issues and can be added later.

Signed-off-by: Boqun Feng <boqun.feng@gmail.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Gary Guo <gary@garyguo.net>
Reviewed-by: FUJITA Tomonori <fujita.tomonori@gmail.com>
Link: https://patch.msgid.link/20260120140503.62804-3-boqun.feng@gmail.com
Link: https://patch.msgid.link/20260303201701.12204-8-boqun@kernel.org
rust/helpers/atomic_ext.c
rust/kernel/sync/atomic.rs
rust/kernel/sync/atomic/internal.rs
rust/kernel/sync/atomic/predefine.rs