raw_atomic_l...add_negative(9)
π raw_atomic_long_add_negative(9) π
okay so this is a page from the Kernel API Manual and honestly? it's a baddie. it's raw_atomic_long_add_negative, and no i will not be pronouncing the truncated version in the header, we're saying the whole thing. periodt.
β¨ NAME β¨
raw_atomic_long_add_negative β the atomic add that ALSO tells you if the result came out negative, with full ordering. two jobs, one function, main character energy fr fr π
πΈ SYNOPSIS πΈ
bool raw_atomic_long_add_negative (long i , atomic_long_t *v );
like yes she returns a bool and yes she takes exactly those two things, no cap π«Ά
π¦ ARGUMENTS π¦
iβ thelongvalue you're adding. that's it, that's the whole vibe.vβ a pointer to anatomic_long_t. this is the thing getting updated, bestie.
π DESCRIPTION π
so the way this works: she atomically updates v to (v + i), and she does it with full ordering. atomic girlie, fully ordered, no shortcuts. lowkey iconic π
and the plot twist β she's safe to use in noinstr code. like she's allowed in the no-instrumentation zone. but listen: prefer atomic_long_add_negative everywhere else, okay? raw_ is the special-occasion one. iykyk π
β RETURN β
trueif the resulting value ofvis negative πfalseotherwise π
that's it. that's the whole test. she adds, she checks, she reports back.
π§ SEE ALSO π§
first up, the kernel file where she lives:
- Kernel file
./include/linux/atomic/atomic-long.h
and now the whole entire friend group β every single one, in order, because we do not skip people in this house π
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_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_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 look at that list. she has a LOT of siblings and they all ate π₯
and that's the page bestie π«Ά source is ./include/linux/atomic, dated October 2026, and the manual name is, once again, raw_atomic_l...add_negative(9) π mwah, go add something negative β¨
π¦ 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