Lines Matching refs:atomic
58 struct atomic { struct
67 typedef struct atomic atomic_t; argument
70 atomic_read(const atomic_t *atomic) in atomic_read() argument
73 return atomic->a_u.au_int; in atomic_read()
77 atomic_set(atomic_t *atomic, int value) in atomic_set() argument
80 atomic->a_u.au_int = value; in atomic_set()
84 atomic_set_release(atomic_t *atomic, int value) in atomic_set_release() argument
86 atomic_store_release(&atomic->a_u.au_int, value); in atomic_set_release()
90 atomic_add(int addend, atomic_t *atomic) in atomic_add() argument
93 atomic_add_int(&atomic->a_u.au_uint, addend); in atomic_add()
97 atomic_sub(int subtrahend, atomic_t *atomic) in atomic_sub() argument
100 atomic_add_int(&atomic->a_u.au_uint, -subtrahend); in atomic_sub()
104 atomic_add_return(int addend, atomic_t *atomic) in atomic_add_return() argument
109 v = (int)atomic_add_int_nv(&atomic->a_u.au_uint, addend); in atomic_add_return()
116 atomic_sub_return(int subtrahend, atomic_t *atomic) in atomic_sub_return() argument
121 v = (int)atomic_add_int_nv(&atomic->a_u.au_uint, -subtrahend); in atomic_sub_return()
128 atomic_inc(atomic_t *atomic) in atomic_inc() argument
131 atomic_inc_uint(&atomic->a_u.au_uint); in atomic_inc()
135 atomic_dec(atomic_t *atomic) in atomic_dec() argument
138 atomic_dec_uint(&atomic->a_u.au_uint); in atomic_dec()
142 atomic_inc_return(atomic_t *atomic) in atomic_inc_return() argument
147 v = (int)atomic_inc_uint_nv(&atomic->a_u.au_uint); in atomic_inc_return()
154 atomic_dec_return(atomic_t *atomic) in atomic_dec_return() argument
159 v = (int)atomic_dec_uint_nv(&atomic->a_u.au_uint); in atomic_dec_return()
166 atomic_dec_and_test(atomic_t *atomic) in atomic_dec_and_test() argument
169 return atomic_dec_return(atomic) == 0; in atomic_dec_and_test()
173 atomic_dec_if_positive(atomic_t *atomic) in atomic_dec_if_positive() argument
179 v = atomic->a_u.au_uint; in atomic_dec_if_positive()
182 } while (atomic_cas_uint(&atomic->a_u.au_uint, v, v - 1) != v); in atomic_dec_if_positive()
189 atomic_or(int value, atomic_t *atomic) in atomic_or() argument
192 atomic_or_uint(&atomic->a_u.au_uint, value); in atomic_or()
196 atomic_and(int value, atomic_t *atomic) in atomic_and() argument
199 atomic_and_uint(&atomic->a_u.au_uint, value); in atomic_and()
203 atomic_andnot(int value, atomic_t *atomic) in atomic_andnot() argument
206 atomic_and_uint(&atomic->a_u.au_uint, ~value); in atomic_andnot()
210 atomic_fetch_add(int value, atomic_t *atomic) in atomic_fetch_add() argument
216 old = atomic->a_u.au_uint; in atomic_fetch_add()
218 } while (atomic_cas_uint(&atomic->a_u.au_uint, old, new) != old); in atomic_fetch_add()
225 atomic_fetch_inc(atomic_t *atomic) in atomic_fetch_inc() argument
227 return atomic_fetch_add(1, atomic); in atomic_fetch_inc()
231 atomic_fetch_xor(int value, atomic_t *atomic) in atomic_fetch_xor() argument
237 old = atomic->a_u.au_uint; in atomic_fetch_xor()
239 } while (atomic_cas_uint(&atomic->a_u.au_uint, old, new) != old); in atomic_fetch_xor()
246 atomic_set_mask(unsigned long mask, atomic_t *atomic) in atomic_set_mask() argument
249 atomic_or_uint(&atomic->a_u.au_uint, mask); in atomic_set_mask()
253 atomic_clear_mask(unsigned long mask, atomic_t *atomic) in atomic_clear_mask() argument
256 atomic_and_uint(&atomic->a_u.au_uint, ~mask); in atomic_clear_mask()
260 atomic_add_unless(atomic_t *atomic, int addend, int zero) in atomic_add_unless() argument
266 value = atomic->a_u.au_int; in atomic_add_unless()
269 } while (atomic_cas_uint(&atomic->a_u.au_uint, value, (value + addend)) in atomic_add_unless()
277 atomic_inc_not_zero(atomic_t *atomic) in atomic_inc_not_zero() argument
280 return atomic_add_unless(atomic, 1, 0); in atomic_inc_not_zero()
284 atomic_xchg(atomic_t *atomic, int new) in atomic_xchg() argument
289 old = (int)atomic_swap_uint(&atomic->a_u.au_uint, (unsigned)new); in atomic_xchg()
296 atomic_cmpxchg(atomic_t *atomic, int expect, int new) in atomic_cmpxchg() argument
306 old = (int)atomic_cas_uint(&atomic->a_u.au_uint, (unsigned)expect, in atomic_cmpxchg()
314 atomic_try_cmpxchg(atomic_t *atomic, int *valuep, int new) in atomic_try_cmpxchg() argument
318 *valuep = atomic_cmpxchg(atomic, expect, new); in atomic_try_cmpxchg()
389 atomic64_cmpxchg(struct atomic64 *atomic, uint64_t expect, uint64_t new) in atomic64_cmpxchg() argument
399 old = atomic_cas_64(&atomic->a_v, expect, new); in atomic64_cmpxchg()