raw_atomic_l...turn_release(9)
π raw_atomic_long_dec_return_release(9) β Kernel API Manual π
okay so bestie, welcome to the Kernel API Manual, and lemme tell you about raw_atomic_long_dec_return_release β she's a little function with a very long name and main character energy. like, the name alone is a whole paragraph. but she slays, and I'm gonna explain her to you fr fr π
β¨ NAME β¨
raw_atomic_long_dec_return_release β atomic decrement, but make it release ordering π
that's it. that's the vibe. one (1) decrement, atomically, with release ordering, and she returns the new value. icon behavior.
π¦ SYNOPSIS π¦
long raw_atomic_long_dec_return_release (atomic_long_t *v );
that's the signature, copy it exactly, don't be cute with it π
πΈ ARGUMENTS πΈ
vβ pointer toatomic_long_t. that's it. that's the whole argument. she takes one pointer and she takes it seriously.
π DESCRIPTION π
Atomically updates v to (v - 1) with release ordering.
okay so unglamorous but important: she takes v, she subtracts one, she does it atomically (nobody else can catch her mid-subtract), and she does it with release ordering β that's the memory-ordering flavor of the moment, periodt.
Safe to use in noinstr code; prefer atomic_long_dec_return_release elsewhere.
π¨ bestie read this one twice: she'sraw_so she's the one you reach for insidenoinstrcode. Everywhere else, the manpage literally says preferatomic_long_dec_return_release. don't be out here using the raw one at brunch when the normal one exists. iykyk π
β RETURN β
The updated value of v.
so like β not the old value, the updated one. post-decrement, not pre-decrement. she's giving you the result, not the receipt. π§Ύβ¨
π SEE ALSO π
Kernel file: ./include/linux/atomic/atomic-long.h β that's where she lives, address her correctly π«Ά
and now the whole friend group, because she literally refuses to be listed without all 84 of her sisters. no cap, all of these:
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_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_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 okayyyyy family reunion ππ every single one accounted for, nobody left on read.
and that's the page bestie!! π this lil legend comes from the source ./include/linux/atomic, dated October 2026, and she's filed under raw_atomic_l...turn_release(9) in the Kernel API Manual β go forth, decrement responsibly, and remember: noinstr only, gorgeous. mwah ππ¦β¨
π¦ 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