rust: helpers: Generify the definitions of rust_helper_*_xchg*

To support atomic pointers, more xchg helpers will be introduced, hence
define macros to generate these helpers to ease the introduction of the
future helpers.

Signed-off-by: Boqun Feng <boqun.feng@gmail.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://patch.msgid.link/20260117122243.24404-3-boqun.feng@gmail.com
Link: https://patch.msgid.link/20260303201701.12204-5-boqun@kernel.org
This commit is contained in:
Boqun Feng
2026-03-03 12:16:52 -08:00
committed by Peter Zijlstra
parent ecc8e9fbaa
commit f92d22b00e

View File

@@ -44,45 +44,21 @@ GEN_READ_SET_HELPERS(i16, s16)
* The architectures that currently support Rust (x86_64, armv7,
* arm64, riscv, and loongarch) satisfy these requirements.
*/
__rust_helper s8 rust_helper_atomic_i8_xchg(s8 *ptr, s8 new)
{
return xchg(ptr, new);
#define GEN_XCHG_HELPER(tname, type, suffix) \
__rust_helper type \
rust_helper_atomic_##tname##_xchg##suffix(type *ptr, type new) \
{ \
return xchg##suffix(ptr, new); \
}
__rust_helper s16 rust_helper_atomic_i16_xchg(s16 *ptr, s16 new)
{
return xchg(ptr, new);
}
#define GEN_XCHG_HELPERS(tname, type) \
GEN_XCHG_HELPER(tname, type, ) \
GEN_XCHG_HELPER(tname, type, _acquire) \
GEN_XCHG_HELPER(tname, type, _release) \
GEN_XCHG_HELPER(tname, type, _relaxed) \
__rust_helper s8 rust_helper_atomic_i8_xchg_acquire(s8 *ptr, s8 new)
{
return xchg_acquire(ptr, new);
}
__rust_helper s16 rust_helper_atomic_i16_xchg_acquire(s16 *ptr, s16 new)
{
return xchg_acquire(ptr, new);
}
__rust_helper s8 rust_helper_atomic_i8_xchg_release(s8 *ptr, s8 new)
{
return xchg_release(ptr, new);
}
__rust_helper s16 rust_helper_atomic_i16_xchg_release(s16 *ptr, s16 new)
{
return xchg_release(ptr, new);
}
__rust_helper s8 rust_helper_atomic_i8_xchg_relaxed(s8 *ptr, s8 new)
{
return xchg_relaxed(ptr, new);
}
__rust_helper s16 rust_helper_atomic_i16_xchg_relaxed(s16 *ptr, s16 new)
{
return xchg_relaxed(ptr, new);
}
GEN_XCHG_HELPERS(i8, s8)
GEN_XCHG_HELPERS(i16, s16)
/*
* try_cmpxchg helpers depend on ARCH_SUPPORTS_ATOMIC_RMW and on the