atomic64_add(9)
π« NAME π«
okay so listen bestie β this is atomic64_add, straight out of the Kernel API Manual (atomic64_add(9)), and it does exactly one thing but it does it flawlessly: atomic add with relaxed ordering. no drama, no surprises, just vibes and math. periodt. π
β¨ SYNOPSIS β¨
void atomic64_add (s64 i , atomic64_t *v );
π ARGUMENTS π
iβ thes64value you're adding. that's it, that's the number, it's giving "just a guy" energy and honestly? iconic. πvβ pointer toatomic64_t. this is the main character β the thing actually getting updated. π«Ά
π¦ DESCRIPTION π¦
so what happens is: v gets updated to (v + i), and the whole thing happens atomically, with relaxed ordering. no half-finished states, no other thread catching it mid-edit. it ate. π₯
v β (v + i)
like yes it's just addition, but it's addition with β¨commitmentβ¨.
β οΈ ngl this is important: it is unsafe to use innoinstrcode β useraw_atomic64_addthere instead. not me warning you twice, but like, i am.raw_atomic64_add. innoinstrcode. don't forget. π
β RETURN β
Nothing. it's a void function, so there's no return value to catch, no little gift waiting for you at the end. you call it, it does the thing, you move on. lowkey refreshing tbh. π¦
π SEE ALSO π
π source file on the map: Kernel file ./include/linux/atomic/atomic-instrumented.h
bestie there are so many siblings. like an unreasonable amount. i'm putting them in little family groups so your eyes don't glaze over, but every single one is here, no cap. π§
πΈ the atomic_* squad
- reads & sets β
atomic_read(9),atomic_read_acquire(9),atomic_set(9),atomic_set_release(9) - add crew β
atomic_add(9),atomic_add_return(9),atomic_add_return_acquire(9),atomic_add_return_release(9),atomic_add_return_relaxed(9),atomic_fetch_add(9),atomic_fetch_add_acquire(9),atomic_fetch_add_release(9),atomic_fetch_add_relaxed(9) - sub crew β
atomic_sub(9),atomic_sub_return(9),atomic_sub_return_acquire(9),atomic_sub_return_release(9),atomic_sub_return_relaxed(9),atomic_fetch_sub(9),atomic_fetch_sub_acquire(9),atomic_fetch_sub_release(9),atomic_fetch_sub_relaxed(9) - inc crew β
atomic_inc(9),atomic_inc_return(9),atomic_inc_return_acquire(9),atomic_inc_return_release(9),atomic_inc_return_relaxed(9),atomic_fetch_inc(9),atomic_fetch_inc_acquire(9),atomic_fetch_inc_release(9),atomic_fetch_inc_relaxed(9) - dec crew β
atomic_dec(9),atomic_dec_return(9),atomic_dec_return_acquire(9),atomic_dec_return_release(9),atomic_dec_return_relaxed(9),atomic_fetch_dec(9),atomic_fetch_dec_acquire(9),atomic_fetch_dec_release(9),atomic_fetch_dec_relaxed(9) - and bit besties β
atomic_and(9),atomic_fetch_and(9),atomic_fetch_and_acquire(9),atomic_fetch_and_release(9),atomic_fetch_and_relaxed(9) - andnot bit besties β
atomic_andnot(9),atomic_fetch_andnot(9),atomic_fetch_andnot_acquire(9),atomic_fetch_andnot_release(9),atomic_fetch_andnot_relaxed(9) - or bit besties β
atomic_or(9),atomic_fetch_or(9),atomic_fetch_or_acquire(9),atomic_fetch_or_release(9),atomic_fetch_or_relaxed(9) - xor bit besties β
atomic_xor(9),atomic_fetch_xor(9),atomic_fetch_xor_acquire(9),atomic_fetch_xor_release(9),atomic_fetch_xor_relaxed(9) - xchg girlies β
atomic_xchg(9),atomic_xchg_acquire(9),atomic_xchg_release(9),atomic_xchg_relaxed(9) - cmpxchg girlies β
atomic_cmpxchg(9),atomic_cmpxchg_acquire(9),atomic_cmpxchg_release(9),atomic_cmpxchg_relaxed(9) - try_cmpxchg girlies β
atomic_try_cmpxchg(9),atomic_try_cmpxchg_acquire(9),atomic_try_cmpxchg_release(9),atomic_try_cmpxchg_relaxed(9) - test girlies β
atomic_sub_and_test(9),atomic_dec_and_test(9),atomic_inc_and_test(9) - add_negative girlies β
atomic_add_negative(9),atomic_add_negative_acquire(9),atomic_add_negative_release(9),atomic_add_negative_relaxed(9) - the "unless" crew β
atomic_fetch_add_unless(9),atomic_add_unless(9),atomic_inc_not_zero(9),atomic_inc_unless_negative(9),atomic_dec_unless_positive(9),atomic_dec_if_positive(9)
π the atomic64_* squad (our people π)
- reads & sets β
atomic64_read(9),atomic64_read_acquire(9),atomic64_set(9),atomic64_set_release(9) - add_return & fetch_add β
atomic64_add_return(9),atomic64_add_return_acquire(9),atomic64_add_return_release(9),atomic64_add_return_relaxed(9),atomic64_fetch_add(9),atomic64_fetch_add_acquire(9),atomic64_fetch_add_release(9),atomic64_fetch_add_relaxed(9) - sub crew β
atomic64_sub(9),atomic64_sub_return(9),atomic64_sub_return_acquire(9),atomic64_sub_return_release(9),atomic64_sub_return_relaxed(9),atomic64_fetch_sub(9),atomic64_fetch_sub_acquire(9),atomic64_fetch_sub_release(9),atomic64_fetch_sub_relaxed(9) - inc crew β
atomic64_inc(9),atomic64_inc_return(9),atomic64_inc_return_acquire(9),atomic64_inc_return_release(9),atomic64_inc_return_relaxed(9),atomic64_fetch_inc(9),atomic64_fetch_inc_acquire(9),atomic64_fetch_inc_release(9),atomic64_fetch_inc_relaxed(9) - dec crew β
atomic64_dec(9),atomic64_dec_return(9),atomic64_dec_return_acquire(9),atomic64_dec_return_release(9),atomic64_dec_return_relaxed(9),atomic64_fetch_dec(9),atomic64_fetch_dec_acquire(9),atomic64_fetch_dec_release(9),atomic64_fetch_dec_relaxed(9) - and & andnot β
atomic64_and(9),atomic64_fetch_and(9),atomic64_fetch_and_acquire(9),atomic64_fetch_and_release(9),atomic64_fetch_and_relaxed(9),atomic64_andnot(9),atomic64_fetch_andnot(9),atomic64_fetch_andnot_acquire(9),atomic64_fetch_andnot_release(9),atomic64_fetch_andnot_relaxed(9) - or & xor β
atomic64_or(9),atomic64_fetch_or(9),atomic64_fetch_or_acquire(9),atomic64_fetch_or_release(9),atomic64_fetch_or_relaxed(9),atomic64_xor(9),atomic64_fetch_xor(9),atomic64_fetch_xor_acquire(9),atomic64_fetch_xor_release(9),atomic64_fetch_xor_relaxed(9) - xchg girlies β
atomic64_xchg(9),atomic64_xchg_acquire(9),atomic64_xchg_release(9),atomic64_xchg_relaxed(9) - cmpxchg girlies β
atomic64_cmpxchg(9),atomic64_cmpxchg_acquire(9),atomic64_cmpxchg_release(9),atomic64_cmpxchg_relaxed(9) - try_cmpxchg girlies β
atomic64_try_cmpxchg(9),atomic64_try_cmpxchg_acquire(9),atomic64_try_cmpxchg_release(9),atomic64_try_cmpxchg_relaxed(9) - test girlies β
atomic64_sub_and_test(9),atomic64_dec_and_test(9),atomic64_inc_and_test(9) - add_negative girlies β
atomic64_add_negative(9),atomic64_add_negative_acquire(9),atomic64_add_negative_release(9),atomic64_add_negative_relaxed(9) - the "unless" crew β
atomic64_fetch_add_unless(9),atomic64_add_unless(9),atomic64_inc_not_zero(9),atomic64_inc_unless_negative(9),atomic64_dec_unless_positive(9),atomic64_dec_if_positive(9)
π¦ the atomic_long_* squad
- reads & sets β
atomic_long_read(9),atomic_long_read_acquire(9),atomic_long_set(9),atomic_long_set_release(9) - add crew β
atomic_long_add(9),atomic_long_add_return(9),atomic_long_add_return_acquire(9),atomic_long_add_return_release(9),atomic_long_add_return_relaxed(9),atomic_long_fetch_add(9),atomic_long_fetch_add_acquire(9),atomic_long_fetch_add_release(9),atomic_long_fetch_add_relaxed(9) - sub crew β
atomic_long_sub(9),atomic_long_sub_return(9),atomic_long_sub_return_acquire(9),atomic_long_sub_return_release(9),atomic_long_sub_return_relaxed(9),atomic_long_fetch_sub(9),atomic_long_fetch_sub_acquire(9),atomic_long_fetch_sub_release(9),atomic_long_fetch_sub_relaxed(9) - inc crew β
atomic_long_inc(9),atomic_long_inc_return(9),atomic_long_inc_return_acquire(9),atomic_long_inc_return_release(9),atomic_long_inc_return_relaxed(9),atomic_long_fetch_inc(9),atomic_long_fetch_inc_acquire(9),atomic_long_fetch_inc_release(9),atomic_long_fetch_inc_relaxed(9) - dec crew β
atomic_long_dec(9),atomic_long_dec_return(9),atomic_long_dec_return_acquire(9),atomic_long_dec_return_release(9),atomic_long_dec_return_relaxed(9),atomic_long_fetch_dec(9),atomic_long_fetch_dec_acquire(9),atomic_long_fetch_dec_release(9),atomic_long_fetch_dec_relaxed(9) - and bit besties β
atomic_long_and(9),atomic_long_fetch_and(9),atomic_long_fetch_and_acquire(9),atomic_long_fetch_and_release(9),atomic_long_fetch_and_relaxed(9) - andnot bit besties β
atomic_long_andnot(9),atomic_long_fetch_andnot(9),atomic_long_fetch_andnot_acquire(9),atomic_long_fetch_andnot_release(9),atomic_long_fetch_andnot_relaxed(9) - or bit besties β
atomic_long_or(9),atomic_long_fetch_or(9),atomic_long_fetch_or_acquire(9),atomic_long_fetch_or_release(9),atomic_long_fetch_or_relaxed(9) - xor bit besties β
atomic_long_xor(9),atomic_long_fetch_xor(9),atomic_long_fetch_xor_acquire(9),atomic_long_fetch_xor_release(9),atomic_long_fetch_xor_relaxed(9) - xchg girlies β
atomic_long_xchg(9),atomic_long_xchg_acquire(9),atomic_long_xchg_release(9),atomic_long_xchg_relaxed(9) - cmpxchg girlies β
atomic_long_cmpxchg(9),atomic_long_cmpxchg_acquire(9),atomic_long_cmpxchg_release(9),atomic_long_cmpxchg_relaxed(9) - try_cmpxchg girlies β
atomic_long_try_cmpxchg(9),atomic_long_try_cmpxchg_acquire(9),atomic_long_try_cmpxchg_release(9),atomic_long_try_cmpxchg_relaxed(9) - test girlies β
atomic_long_sub_and_test(9),atomic_long_dec_and_test(9),atomic_long_inc_and_test(9) - add_negative girlies β
atomic_long_add_negative(9),atomic_long_add_negative_acquire(9),atomic_long_add_negative_release(9),atomic_long_add_negative_relaxed(9) - the "unless" crew β
atomic_long_fetch_add_unless(9),atomic_long_add_unless(9),atomic_long_inc_not_zero(9),atomic_long_inc_unless_negative(9),atomic_long_dec_unless_positive(9),atomic_long_dec_if_positive(9)
mwah π that's the whole page, bestie. brought to you by ./include/linux/atomic, dated October 2026. go forth and add atomically. πβ¨π¦
π¦ 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