atomic_long_...h_or_acquire(9)
π atomic_long_fetch_or_acquire(9)
okay so bestie, this is a page straight out of the Kernel API Manual and it's short but she is mighty β it's the whole vibe of "OR a long, atomically, with acquire ordering, and hand me back what was there before." iconic behaviour honestly. π«Ά
πΈ NAME
atomic_long_fetch_or_acquire β atomic bitwise OR with acquire ordering β¨
β¨ SYNOPSIS
long atomic_long_fetch_or_acquire (long i , atomic_long_t *v );
π ARGUMENTS
iβ alongvalue. literally just a long, no drama. it's the thing getting OR'd in.vβ pointer toatomic_long_t. this is the atomic long bestie that's actually getting updated, so pls pass a real pointer, not a vibe. π
π₯ DESCRIPTION
So the way this works: she atomically updates v to (v | i) with acquire ordering. atomic. one clean operation, no half-states, no "oops another thread saw a weird in-between value" situation. π
β οΈ danger zone, no cap: this one is unsafe to use in noinstr code. If you're innoinstrterritory, useraw_atomic_long_fetch_or_acquirethere instead. do not skip this, fr fr, that's the whole point of theraw_variant existing. π
π RETURN
The original value of v β i.e. the value before the OR landed. she hands you the receipts of what was there first. π
π¦ SEE ALSO
kernel file: ./include/linux/atomic/atomic-instrumented.h
okay this next part is a lot of names but every single one of them matters, so I'm not skipping a single one β group-chat style, family by family. π
atomic_*β the read & set girlies:atomic_read(9),atomic_read_acquire(9),atomic_set(9),atomic_set_release(9)atomic_*β add & sub: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 & dec: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 / andnot / or / xor: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 & cmpxchg: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_*β tests & unless-y ones: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 & set:atomic64_read(9),atomic64_read_acquire(9),atomic64_set(9),atomic64_set_release(9)atomic64_*β add & sub: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 & dec: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 / andnot / or / xor: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 & cmpxchg: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_*β tests & unless-y ones: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 & set:atomic_long_read(9),atomic_long_read_acquire(9),atomic_long_set(9),atomic_long_set_release(9)atomic_long_*β add & sub: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 & dec: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),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 / andnot / or / xor: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_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 & cmpxchg: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_*β tests & unless-y ones: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)
and that's the page, bestie β go forth and OR things atomically π β¨
sign-off szn: this lovely little page lives at ./include/linux/atomic, dated October 2026. mwah, take care of her ππ¦
π¦ 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