raw_atomic_...xchg_relaxed(9)
hi bestie!! π we're in the Kernel API Manual, and this page is the one and only raw_atomic_long_try_cmpxchg_relaxed β header title says raw_atomic_...xchg_relaxed(9). it's giving raw atomic-long compare-and-exchange with relaxed ordering, and yes, it's lowkey iconic β¨
β¨ NAME β¨
raw_atomic_long_try_cmpxchg_relaxed β atomic compare and exchange with relaxed ordering. that's the whole assignment bestie π
π¦ SYNOPSIS π¦
the signature is literally this, no edits, no vibes-based renaming:
bool raw_atomic_long_try_cmpxchg_relaxed (atomic_long_t *v , long *old ,
long new );
π ARGUMENTS π
vβ pointer toatomic_long_t. (the atomic long getting the main-character treatment π)oldβ pointer tolongvalue to compare with. (the compare partner)newβlongvalue to assign. (the new value that might slide in β¨)
π DESCRIPTION π
okay so here's the lore: if (v == old), it atomically updates v to new with relaxed ordering. otherwise, v is not modified, old is updated to the current value of v, and relaxed ordering is provided. it's giving βmaybe swap, maybe just update the comparison valueβ and either way the ordering is relaxed, no cap π¦
important bestie note: it's safe to use innoinstrcode; preferatomic_long_try_cmpxchg_relaxedelsewhere π«Ά
π RETURN π
trueif the exchange occurred.falseotherwise.
that's the bool reveal, periodt π
πΈ SEE ALSO πΈ
Kernel file: ./include/linux/atomic/atomic-long.h β that's the home base, iykyk π
the whole atomic-long squad is here:
raw_atomic_long_read(9), raw_atomic_long_read_acquire(9),
raw_atomic_long_set(9), raw_atomic_long_set_release(9),
raw_atomic_long_add(9), raw_atomic_long_add_return(9),
raw_atomic_long_add_return_acquire(9),
raw_atomic_long_add_return_release(9),
raw_atomic_long_add_return_relaxed(9), raw_atomic_long_fetch_add(9),
raw_atomic_long_fetch_add_acquire(9),
raw_atomic_long_fetch_add_release(9),
raw_atomic_long_fetch_add_relaxed(9), raw_atomic_long_sub(9),
raw_atomic_long_sub_return(9), raw_atomic_long_sub_return_acquire(9),
raw_atomic_long_sub_return_release(9),
raw_atomic_long_sub_return_relaxed(9), raw_atomic_long_fetch_sub(9),
raw_atomic_long_fetch_sub_acquire(9),
raw_atomic_long_fetch_sub_release(9),
raw_atomic_long_fetch_sub_relaxed(9), raw_atomic_long_inc(9),
raw_atomic_long_inc_return(9), raw_atomic_long_inc_return_acquire(9),
raw_atomic_long_inc_return_release(9),
raw_atomic_long_inc_return_relaxed(9), raw_atomic_long_fetch_inc(9),
raw_atomic_long_fetch_inc_acquire(9),
raw_atomic_long_fetch_inc_release(9),
raw_atomic_long_fetch_inc_relaxed(9), raw_atomic_long_dec(9),
raw_atomic_long_dec_return(9), raw_atomic_long_dec_return_acquire(9),
raw_atomic_long_dec_return_release(9),
raw_atomic_long_dec_return_relaxed(9), raw_atomic_long_fetch_dec(9),
raw_atomic_long_fetch_dec_acquire(9),
raw_atomic_long_fetch_dec_release(9),
raw_atomic_long_fetch_dec_relaxed(9), raw_atomic_long_and(9),
raw_atomic_long_fetch_and(9), raw_atomic_long_fetch_and_acquire(9),
raw_atomic_long_fetch_and_release(9),
raw_atomic_long_fetch_and_relaxed(9), raw_atomic_long_andnot(9),
raw_atomic_long_fetch_andnot(9),
raw_atomic_long_fetch_andnot_acquire(9),
raw_atomic_long_fetch_andnot_release(9),
raw_atomic_long_fetch_andnot_relaxed(9), raw_atomic_long_or(9),
raw_atomic_long_fetch_or(9), raw_atomic_long_fetch_or_acquire(9),
raw_atomic_long_fetch_or_release(9),
raw_atomic_long_fetch_or_relaxed(9), raw_atomic_long_xor(9),
raw_atomic_long_fetch_xor(9), raw_atomic_long_fetch_xor_acquire(9),
raw_atomic_long_fetch_xor_release(9),
raw_atomic_long_fetch_xor_relaxed(9), raw_atomic_long_xchg(9),
raw_atomic_long_xchg_acquire(9), raw_atomic_long_xchg_release(9),
raw_atomic_long_xchg_relaxed(9), raw_atomic_long_cmpxchg(9),
raw_atomic_long_cmpxchg_acquire(9), raw_atomic_long_cmpxchg_release(9),
raw_atomic_long_cmpxchg_relaxed(9), raw_atomic_long_try_cmpxchg(9),
raw_atomic_long_try_cmpxchg_acquire(9),
raw_atomic_long_try_cmpxchg_release(9), raw_atomic_long_sub_and_test(9),
raw_atomic_long_dec_and_test(9), raw_atomic_long_inc_and_test(9),
raw_atomic_long_add_negative(9),
raw_atomic_long_add_negative_acquire(9),
raw_atomic_long_add_negative_release(9),
raw_atomic_long_add_negative_relaxed(9),
raw_atomic_long_fetch_add_unless(9), raw_atomic_long_add_unless(9),
raw_atomic_long_inc_not_zero(9), raw_atomic_long_inc_unless_negative(9),
raw_atomic_long_dec_unless_positive(9),
raw_atomic_long_dec_if_positive(9)
that's the full squad β every single ref made it to the group chat π
mwah π this page came from ./include/linux/atomic, dated October 2026, and yes the header title is raw_atomic_...xchg_relaxed(9). periodt.
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms