raw_atomic_..._dec_relaxed(9)
πΈ raw_atomic_..._dec_relaxed (9) β Kernel API Manual vibes πΈ
okay bestie, so we're in the Kernel API Manual today and the page we're reading is raw_atomic_..._dec_relaxed(9). yes the title is literally abbreviated with dots, it's giving mysterious. stay with me, it's actually cute.
β¨ NAME β¨
raw_atomic_long_fetch_dec_relaxed β atomic decrement, but make it relaxed ordering. she's chill like that π
π SYNOPSIS π
long raw_atomic_long_fetch_dec_relaxed (atomic_long_t *v );
that's the whole signature, no cap. one pointer in, one long out. π«Ά
π¦ ARGUMENTS π¦
vβ pointer toatomic_long_t. that's it. that's the argument. she's pointing at the thing we're about to decrement π
π₯ DESCRIPTION π₯
so what does she do. atomically updates v to (v - 1) with relaxed ordering. literally just "subtract one, but make it atomic, and don't be dramatic about memory barriers". the way that it's atomic AND relaxed? main character energy fr fr β¨
also important bestie: it's safe to use innoinstrcode. but like β preferatomic_long_fetch_dec_relaxedeverywhere else. this raw one is for the special occasions (iykyk) π
π RETURN π
returns the original value of v β so like, the value before the decrement, not after. she gives you the receipt from before the purchase, not the new balance. iconic behavior honestly ππ
π§ SEE ALSO π§
okay this is the part where the manpage goes absolutely feral and lists the entire atomic long family. every single sibling. get comfy, we're going through the whole group chat π
Kernel file ./include/linux/atomic/atomic-long.hβ (the actual source file, go read her)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_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_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)
like. eighty-four of them. the atomic long family ate and left no crumbs ππ₯
and that's the page bestie!! π the source path is ./include/linux/atomic, the date on this one is October 2026, and the whole thing belongs to the Kernel API Manual (that's the manual name, in case you were wondering where the header line went β it's right here, folded in like a little bow π). mwah, go decrement something responsibly πβ¨π¦
π¦ 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