raw_atomic64_inc_return(9)
β¨ raw_atomic64_inc_return β Kernel API Manual, section 9 β¨
omg hi bestie π okay so you found the page for raw_atomic64_inc_return(9) β yes it's a whole section 9 manual page, from the Kernel API Manual, and yes it's as iconic as it sounds. Let's get into it π
π« NAME π«
raw_atomic64_inc_return β an atomic increment, but with full ordering π₯ like it's not just adding one, it's adding one and making sure the universe agrees on the order it happened. main character energy fr fr.
πΈ SYNOPSIS πΈ
s64 raw_atomic64_inc_return (atomic64_t *v );
so you hand it one thing and it hands you back an s64. that's the whole vibe check π¦
π ARGUMENTS π
vβ pointer toatomic64_t. yes bestie, a pointer. it wants the address of your 64-bit atomic, not a copy, not a vibe, the actual address π
π§ DESCRIPTION π§
okay so, raw_atomic64_inc_return atomically updates v to (v + 1) β and it does it with full ordering. atomically means nobody can catch it mid-increment and be like "wait what was it before", no cap π
It's safe to use innoinstrcode, which is a whole special little zone. But elsewhere? preferatomic64_inc_returnβ the page literally says so, and we listen to the page π
so like β noinstr code, yes, go off π. everywhere else, use the non-raw one. iykyk.
β RETURN β
the updated value of v β meaning the value after the + 1, not the old one. so if v was 41, you get 42. iconic. ate. no notes πβ¨
π SEE ALSO π
okay this is the part where the page just dumps its entire friend group on you, and honestly? slay. every single one of these is real and here it is, nobody gets left out π«Ά
first up, the actual kernel file it lives in:
./include/linux/atomic/atomic-arch-fallback.h
then the whole 32-bit-ish crew, in the order the page lists them:
- read/set basics β
raw_atomic_read(9),raw_atomic_read_acquire(9),raw_atomic_set(9),raw_atomic_set_release(9) - add family β
raw_atomic_add(9),raw_atomic_add_return(9),raw_atomic_add_return_acquire(9),raw_atomic_add_return_release(9),raw_atomic_add_return_relaxed(9),raw_atomic_fetch_add(9),raw_atomic_fetch_add_acquire(9),raw_atomic_fetch_add_release(9),raw_atomic_fetch_add_relaxed(9) - sub family β
raw_atomic_sub(9),raw_atomic_sub_return(9),raw_atomic_sub_return_acquire(9),raw_atomic_sub_return_release(9),raw_atomic_sub_return_relaxed(9),raw_atomic_fetch_sub(9),raw_atomic_fetch_sub_acquire(9),raw_atomic_fetch_sub_release(9),raw_atomic_fetch_sub_relaxed(9) - inc family β
raw_atomic_inc(9),raw_atomic_inc_return(9),raw_atomic_inc_return_acquire(9),raw_atomic_inc_return_release(9),raw_atomic_inc_return_relaxed(9),raw_atomic_fetch_inc(9),raw_atomic_fetch_inc_acquire(9),raw_atomic_fetch_inc_release(9),raw_atomic_fetch_inc_relaxed(9) - dec family β
raw_atomic_dec(9),raw_atomic_dec_return(9),raw_atomic_dec_return_acquire(9),raw_atomic_dec_return_release(9),raw_atomic_dec_return_relaxed(9),raw_atomic_fetch_dec(9),raw_atomic_fetch_dec_acquire(9),raw_atomic_fetch_dec_release(9),raw_atomic_fetch_dec_relaxed(9) - and / andnot β
raw_atomic_and(9),raw_atomic_fetch_and(9),raw_atomic_fetch_and_acquire(9),raw_atomic_fetch_and_release(9),raw_atomic_fetch_and_relaxed(9),raw_atomic_andnot(9),raw_atomic_fetch_andnot(9),raw_atomic_fetch_andnot_acquire(9),raw_atomic_fetch_andnot_release(9),raw_atomic_fetch_andnot_relaxed(9) - or / xor β
raw_atomic_or(9),raw_atomic_fetch_or(9),raw_atomic_fetch_or_acquire(9),raw_atomic_fetch_or_release(9),raw_atomic_fetch_or_relaxed(9),raw_atomic_xor(9),raw_atomic_fetch_xor(9),raw_atomic_fetch_xor_acquire(9),raw_atomic_fetch_xor_release(9),raw_atomic_fetch_xor_relaxed(9) - xchg β
raw_atomic_xchg(9),raw_atomic_xchg_acquire(9),raw_atomic_xchg_release(9),raw_atomic_xchg_relaxed(9) - cmpxchg β
raw_atomic_cmpxchg(9),raw_atomic_cmpxchg_acquire(9),raw_atomic_cmpxchg_release(9),raw_atomic_cmpxchg_relaxed(9),raw_atomic_try_cmpxchg(9),raw_atomic_try_cmpxchg_acquire(9),raw_atomic_try_cmpxchg_release(9),raw_atomic_try_cmpxchg_relaxed(9) - tests & negatives β
raw_atomic_sub_and_test(9),raw_atomic_dec_and_test(9),raw_atomic_inc_and_test(9),raw_atomic_add_negative(9),raw_atomic_add_negative_acquire(9),raw_atomic_add_negative_release(9),raw_atomic_add_negative_relaxed(9) - the conditional girlies β
raw_atomic_fetch_add_unless(9),raw_atomic_add_unless(9),raw_atomic_inc_not_zero(9),raw_atomic_inc_unless_negative(9),raw_atomic_dec_unless_positive(9),raw_atomic_dec_if_positive(9)
and now the 64-bit side of the family, because this page is raw_atomic64_* and it has so many siblings π:
- 64 read/set β
raw_atomic64_read(9),raw_atomic64_read_acquire(9),raw_atomic64_set(9),raw_atomic64_set_release(9) - 64 add β
raw_atomic64_add(9),raw_atomic64_add_return(9),raw_atomic64_add_return_acquire(9),raw_atomic64_add_return_release(9),raw_atomic64_add_return_relaxed(9),raw_atomic64_fetch_add(9),raw_atomic64_fetch_add_acquire(9),raw_atomic64_fetch_add_release(9),raw_atomic64_fetch_add_relaxed(9) - 64 sub β
raw_atomic64_sub(9),raw_atomic64_sub_return(9),raw_atomic64_sub_return_acquire(9),raw_atomic64_sub_return_release(9),raw_atomic64_sub_return_relaxed(9),raw_atomic64_fetch_sub(9),raw_atomic64_fetch_sub_acquire(9),raw_atomic64_fetch_sub_release(9),raw_atomic64_fetch_sub_relaxed(9) - 64 inc β
raw_atomic64_inc(9),raw_atomic64_inc_return_acquire(9),raw_atomic64_inc_return_release(9),raw_atomic64_inc_return_relaxed(9),raw_atomic64_fetch_inc(9),raw_atomic64_fetch_inc_acquire(9),raw_atomic64_fetch_inc_release(9),raw_atomic64_fetch_inc_relaxed(9) - 64 dec β
raw_atomic64_dec(9),raw_atomic64_dec_return(9),raw_atomic64_dec_return_acquire(9),raw_atomic64_dec_return_release(9),raw_atomic64_dec_return_relaxed(9),raw_atomic64_fetch_dec(9),raw_atomic64_fetch_dec_acquire(9),raw_atomic64_fetch_dec_release(9),raw_atomic64_fetch_dec_relaxed(9) - 64 and / andnot β
raw_atomic64_and(9),raw_atomic64_fetch_and(9),raw_atomic64_fetch_and_acquire(9),raw_atomic64_fetch_and_release(9),raw_atomic64_fetch_and_relaxed(9),raw_atomic64_andnot(9),raw_atomic64_fetch_andnot(9),raw_atomic64_fetch_andnot_acquire(9),raw_atomic64_fetch_andnot_release(9),raw_atomic64_fetch_andnot_relaxed(9) - 64 or / xor β
raw_atomic64_or(9),raw_atomic64_fetch_or(9),raw_atomic64_fetch_or_acquire(9),raw_atomic64_fetch_or_release(9),raw_atomic64_fetch_or_relaxed(9),raw_atomic64_xor(9),raw_atomic64_fetch_xor(9),raw_atomic64_fetch_xor_acquire(9),raw_atomic64_fetch_xor_release(9),raw_atomic64_fetch_xor_relaxed(9) - 64 xchg β
raw_atomic64_xchg(9),raw_atomic64_xchg_acquire(9),raw_atomic64_xchg_release(9),raw_atomic64_xchg_relaxed(9) - 64 cmpxchg β
raw_atomic64_cmpxchg(9),raw_atomic64_cmpxchg_acquire(9),raw_atomic64_cmpxchg_release(9),raw_atomic64_cmpxchg_relaxed(9),raw_atomic64_try_cmpxchg(9),raw_atomic64_try_cmpxchg_acquire(9),raw_atomic64_try_cmpxchg_release(9),raw_atomic64_try_cmpxchg_relaxed(9) - 64 tests & negatives β
raw_atomic64_sub_and_test(9),raw_atomic64_dec_and_test(9),raw_atomic64_inc_and_test(9),raw_atomic64_add_negative(9),raw_atomic64_add_negative_acquire(9),raw_atomic64_add_negative_release(9),raw_atomic64_add_negative_relaxed(9) - 64 conditionals β
raw_atomic64_fetch_add_unless(9),raw_atomic64_add_unless(9),raw_atomic64_inc_not_zero(9),raw_atomic64_inc_unless_negative(9),raw_atomic64_dec_unless_positive(9),raw_atomic64_dec_if_positive(9)
π quick note bestie: notice raw_atomic64_inc_return(9) itself is not in that list β that's you, you're the page π
and that's the whole page!! sourced from ./include/linux/atomic, dated October 2026 β go forth and increment responsibly, bestie π¦πβ¨
π¦ 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