atomic_long_inc_return(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… atomic_long_inc_return(9) β€” straight from the Kernel API Manual, bestie ✨

okay so picture this: you're deep in kernel land, you've got a counter, and you need it to go up by exactly one without anyone else stomping on it. that's this. this is the function. she's iconic, she's atomic, she has full ordering, and she's gonna tell you what the new number is when she's done. πŸŽ€


🌸 NAME

atomic_long_inc_return β€” atomic increment with full ordering. that's it, that's the whole vibe. πŸ¦‹


✨ SYNOPSIS

long atomic_long_inc_return (atomic_long_t *v );

like, you hand her a pointer and she hands you back a long. simple. clean. slay. πŸ’œ


🫢 ARGUMENTS

  • v β€” pointer to atomic_long_t. yes bestie, pointer, not the value itself. do not pass the value. do not. πŸ™ˆ

πŸ’– DESCRIPTION

She atomically updates v to (v + 1) β€” full ordering included, no cap, the whole package. πŸ”₯

⚠️ ok so important lore: she is unsafe to use in noinstr code. if you're in noinstr, use raw_atomic_long_inc_return there instead. don't come for me, that's just what the manual says πŸ’€

πŸ‘‘ RETURN

The updated value of v. not the old one, not a bool, not a vibe β€” the updated value. periodt. ⭐


🌈 SEE ALSO

first up, the kernel file (iykyk): ./include/linux/atomic/atomic-instrumented.h

and then the entire friend group β€” every single one of these, no skipping, we don't do that here πŸ’…

atomic_read(9), atomic_read_acquire(9), atomic_set(9), atomic_set_release(9),
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), 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), 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), 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), atomic_and(9),
atomic_fetch_and(9), atomic_fetch_and_acquire(9),
atomic_fetch_and_release(9), atomic_fetch_and_relaxed(9), atomic_andnot(9),
atomic_fetch_andnot(9), atomic_fetch_andnot_acquire(9),
atomic_fetch_andnot_release(9), atomic_fetch_andnot_relaxed(9),
atomic_or(9), atomic_fetch_or(9), atomic_fetch_or_acquire(9),
atomic_fetch_or_release(9), atomic_fetch_or_relaxed(9), atomic_xor(9),
atomic_fetch_xor(9), atomic_fetch_xor_acquire(9),
atomic_fetch_xor_release(9), atomic_fetch_xor_relaxed(9), atomic_xchg(9),
atomic_xchg_acquire(9), atomic_xchg_release(9), atomic_xchg_relaxed(9),
atomic_cmpxchg(9), atomic_cmpxchg_acquire(9), atomic_cmpxchg_release(9),
atomic_cmpxchg_relaxed(9), atomic_try_cmpxchg(9),
atomic_try_cmpxchg_acquire(9), atomic_try_cmpxchg_release(9),
atomic_try_cmpxchg_relaxed(9), atomic_sub_and_test(9),
atomic_dec_and_test(9), atomic_inc_and_test(9), atomic_add_negative(9),
atomic_add_negative_acquire(9), atomic_add_negative_release(9),
atomic_add_negative_relaxed(9), 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), atomic64_read(9), atomic64_read_acquire(9),
atomic64_set(9), atomic64_set_release(9), atomic64_add(9),
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),
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),
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),
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),
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), 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), atomic64_xchg(9),
atomic64_xchg_acquire(9), atomic64_xchg_release(9),
atomic64_xchg_relaxed(9), atomic64_cmpxchg(9),
atomic64_cmpxchg_acquire(9), atomic64_cmpxchg_release(9),
atomic64_cmpxchg_relaxed(9), atomic64_try_cmpxchg(9),
atomic64_try_cmpxchg_acquire(9), atomic64_try_cmpxchg_release(9),
atomic64_try_cmpxchg_relaxed(9), atomic64_sub_and_test(9),
atomic64_dec_and_test(9), atomic64_inc_and_test(9),
atomic64_add_negative(9), atomic64_add_negative_acquire(9),
atomic64_add_negative_release(9), atomic64_add_negative_relaxed(9),
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),
atomic_long_read(9), atomic_long_read_acquire(9), atomic_long_set(9),
atomic_long_set_release(9), 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),
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), atomic_long_inc(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), 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),
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), 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), 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),
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), atomic_long_xchg(9),
atomic_long_xchg_acquire(9), atomic_long_xchg_release(9),
atomic_long_xchg_relaxed(9), atomic_long_cmpxchg(9),
atomic_long_cmpxchg_acquire(9), atomic_long_cmpxchg_release(9),
atomic_long_cmpxchg_relaxed(9), atomic_long_try_cmpxchg(9),
atomic_long_try_cmpxchg_acquire(9), atomic_long_try_cmpxchg_release(9),
atomic_long_try_cmpxchg_relaxed(9), atomic_long_sub_and_test(9),
atomic_long_dec_and_test(9), atomic_long_inc_and_test(9),
atomic_long_add_negative(9), atomic_long_add_negative_acquire(9),
atomic_long_add_negative_release(9),
atomic_long_add_negative_relaxed(9), 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)

that's the whole page bestie, go increment something πŸ’…

okay and for the little sign-off moment: this gorgeous thing lives in ./include/linux/atomic, and she's dated October 2026. mwah. πŸ§šπŸ’–

πŸ“¦ where this page comes from