raw_atomic_...xchg_relaxed(9)
okay so bestie, welcome to the Kernel API Manual β this pageβs header is raw_atomic_...xchg_relaxed(9), but the function thatβs actually serving looks is raw_atomic_long_cmpxchg_relaxed. itβs giving atomic compare-and-swap with relaxed ordering, and Iβm obsessed π
π NAME π
raw_atomic_long_cmpxchg_relaxed β atomic compare and exchange with relaxed ordering. thatβs the name, no notes. β¨
β¨ SYNOPSIS β¨
hereβs the signature, copy it exactly or the compiler will side-eye you:
long raw_atomic_long_cmpxchg_relaxed (atomic_long_t *v , long old , long
new );
π ARGUMENTS π
vβ pointer toatomic_long_t. literally a pointer to the atomic long youβre messing with. π«Άoldβlongvalue to compare with. this is the βare you the one?β value. πnewβlongvalue to assign. the replacement if the vibe check passes. πΈ
π¦ DESCRIPTION π¦
okay so hereβs the tea: if (v == old), it atomically updates v to new with relaxed ordering. otherwise, v is not modified and relaxed ordering is provided. literally that simple. π¦
itβs safe to use in noinstr code; prefer atomic_long_cmpxchg_relaxed elsewhere. iykyk. π
πΈ RETURN πΈ
the original value of v. thatβs the whole return, bestie β no extra sparkle, just the value you had before. π«Ά
π SEE ALSO π
kernel file: ./include/linux/atomic/atomic-long.h
the whole extended friend group, every single one, no cap:
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_try_cmpxchg(9)
raw_atomic_long_try_cmpxchg_acquire(9)
raw_atomic_long_try_cmpxchg_release(9)
raw_atomic_long_try_cmpxchg_relaxed(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)
mwah π this page is from ./include/linux/atomic, dated October 2026, and its header 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