raw_atomic6...h_or_acquire(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ raw_atomic64_fetch_or_acquire ✨

okay so this is straight out of the Kernel API Manual bestie, and honestly? it's a tiny little function but it's doing the absolute most. buckle up πŸŽ€


πŸ’– NAME πŸ’–

raw_atomic64_fetch_or_acquire β€” atomic bitwise OR, but make it acquire ordered πŸ‘‘

πŸ¦‹ SYNOPSIS πŸ¦‹

s64 raw_atomic64_fetch_or_acquire (s64 i , atomic64_t *v );

🌸 ARGUMENTS 🌸

  • i β€” an s64 value. that's it, that's the number, it's giving "the thing you're OR-ing in" πŸ’…
  • v β€” pointer to atomic64_t. your actual atomic bestie, the one getting updated 🫢

πŸ”₯ DESCRIPTION πŸ”₯

So what does it do. It atomically updates v to (v | i) β€” like, atomically atomically, with acquire ordering on top. no cap. ✨

And here's the part i need you to hear: it's safe to use in noinstr code. that's the whole reason this raw version exists. everywhere else though? prefer atomic64_fetch_or_acquire, fr fr. the raw one is the special-occasion outfit, not the everyday fit πŸ‘‘

πŸ’€ RETURN πŸ’€

The original value of v. not the new one. the original one. the one from before you touched it. she remembers where she came from πŸ˜­πŸ’–

🌈 SEE ALSO 🌈

the source file for all this lives at ./include/linux/atomic/atomic-arch-fallback.h β€” go look, iykyk πŸ“

and now the whole friend group, in order, no one left out, periodt:

raw_atomic_read(9), raw_atomic_read_acquire(9), raw_atomic_set(9), raw_atomic_set_release(9), 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), 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), 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), 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), 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), 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), 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), 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), raw_atomic64_read(9), raw_atomic64_read_acquire(9), raw_atomic64_set(9), raw_atomic64_set_release(9), 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), 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), 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(9), raw_atomic64_fetch_inc_acquire(9), raw_atomic64_fetch_inc_release(9), raw_atomic64_fetch_inc_relaxed(9), 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), 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), raw_atomic64_or(9), raw_atomic64_fetch_or(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), 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), 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)


πŸŽ€ okay that's the whole page, and yes i read all of them so you don't have to. this one came from ./include/linux/atomic and it's dated October 2026 β€” so it's basically from the future, main character energy only πŸ’œπŸ¦‹ bye bestie, go OR something atomically ✨

πŸ“¦ where this page comes from