raw_atomic64_fetch_inc(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… raw_atomic64_fetch_inc β€” Kernel API Manual ✨

okay so bestie, you know how the manpage name is raw_atomic64_fetch_inc(9)? yeah. that's the whole vibe. it's a kernel API manual situation and we're gonna get into it 🫢


🌸 NAME 🌸

raw_atomic64_fetch_inc β€” atomic increment with full ordering

like, it bumps a number up by one and does it atomically, and it's got full ordering on top. no cap. πŸ”₯


✨ SYNOPSIS ✨

s64 raw_atomic64_fetch_inc (atomic64_t *v );

literally that's the whole call. one pointer, one s64 coming back at you πŸ’–


πŸŽ€ ARGUMENTS πŸŽ€

  • v β€” pointer to atomic64_t. that's it. that's the argument. she's a pointer to the atomic 64-bit thing you're about to nudge 🌸

πŸ¦‹ DESCRIPTION πŸ¦‹

Atomically updates v to (v + 1) with full ordering.

okay so "atomically" means nobody else can sneak in halfway through and see a mess β€” the whole +1 happens as one vibe ✨ and "full ordering" means it's not cutting corners with the memory barriers either, iykyk.

Safe to use in noinstr code; prefer atomic64_fetch_inc elsewhere.

πŸ’€ real talk: noinstr code is the picky one, and this function is allowed in there. but if you're not in noinstr land? the manpage says prefer atomic64_fetch_inc. so like... do that. it's giving "use the normal one for normal situations" 🧚

⭐ RETURN ⭐

The original value of v.

not the new one, bestie. the original one. the value before the increment. she gives you the past and then moves on πŸ‘‘ it's giving main character energy honestly.


🌈 SEE ALSO 🌈

so this is the part where I hold your hand, because the list is long and we're getting through all of it no skipping πŸ’œ

the kernel file: ./include/linux/atomic/atomic-arch-fallback.h

read / set girlies: 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 (our girl's home turf): 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 bit squad: 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 bit squad: 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)

exchange + compare-and-swap crew: raw_atomic_xchg(9), raw_atomic_xchg_acquire(9), raw_atomic_xchg_release(9), raw_atomic_xchg_relaxed(9), 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)

test / unless crew: 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), 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, which is basically the same set but with 64 in the name, so strap in πŸ“

64-bit read / set: raw_atomic64_read(9), raw_atomic64_read_acquire(9), raw_atomic64_set(9), raw_atomic64_set_release(9)

64-bit 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-bit 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-bit inc: raw_atomic64_inc(9), raw_atomic64_inc_return(9), raw_atomic64_inc_return_acquire(9), raw_atomic64_inc_return_release(9), raw_atomic64_inc_return_relaxed(9), raw_atomic64_fetch_inc_acquire(9), raw_atomic64_fetch_inc_release(9), raw_atomic64_fetch_inc_relaxed(9)

64-bit 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-bit 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-bit 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-bit exchange + compare-and-swap: raw_atomic64_xchg(9), raw_atomic64_xchg_acquire(9), raw_atomic64_xchg_release(9), raw_atomic64_xchg_relaxed(9), 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-bit test / unless: 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), 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)


and that's the whole page, bestie, you ate that πŸ’…βœ¨

sign-off time πŸŽ€ this little beauty lives in ./include/linux/atomic and it's dated October 2026 β€” that's the source, that's the version, that's the whole footer vibe. mwah 😘 πŸ¦‹

πŸ“¦ where this page comes from