Lines Matching refs:ptr

131 #define qatomic_read__nocheck(ptr) \
132 __atomic_load_n(ptr, __ATOMIC_RELAXED)
134 #define qatomic_read(ptr) \
136 qemu_build_assert(sizeof(*ptr) <= ATOMIC_REG_SIZE); \
137 qatomic_read__nocheck(ptr); \
140 #define qatomic_set__nocheck(ptr, i) \
141 __atomic_store_n(ptr, i, __ATOMIC_RELAXED)
143 #define qatomic_set(ptr, i) do { \
144 qemu_build_assert(sizeof(*ptr) <= ATOMIC_REG_SIZE); \
145 qatomic_set__nocheck(ptr, i); \
152 #define qatomic_rcu_read__nocheck(ptr, valptr) \
153 __atomic_load(ptr, valptr, __ATOMIC_CONSUME);
155 #define qatomic_rcu_read__nocheck(ptr, valptr) \
156 __atomic_load(ptr, valptr, __ATOMIC_RELAXED); \
165 #define qatomic_rcu_read_internal(ptr, _val) \
167 qemu_build_assert(sizeof(*ptr) <= ATOMIC_REG_SIZE); \
168 typeof_strip_qual(*ptr) _val; \
169 qatomic_rcu_read__nocheck(ptr, &_val); \
172 #define qatomic_rcu_read(ptr) \
173 qatomic_rcu_read_internal((ptr), MAKE_IDENTFIER(_val))
175 #define qatomic_rcu_set(ptr, i) do { \
176 qemu_build_assert(sizeof(*ptr) <= ATOMIC_REG_SIZE); \
177 __atomic_store_n(ptr, i, __ATOMIC_RELEASE); \
180 #define qatomic_load_acquire(ptr) \
182 qemu_build_assert(sizeof(*ptr) <= ATOMIC_REG_SIZE); \
183 typeof_strip_qual(*ptr) _val; \
184 __atomic_load(ptr, &_val, __ATOMIC_ACQUIRE); \
188 #define qatomic_store_release(ptr, i) do { \
189 qemu_build_assert(sizeof(*ptr) <= ATOMIC_REG_SIZE); \
190 __atomic_store_n(ptr, i, __ATOMIC_RELEASE); \
196 #define qatomic_xchg__nocheck(ptr, i) ({ \
197 __atomic_exchange_n(ptr, (i), __ATOMIC_SEQ_CST); \
200 #define qatomic_xchg(ptr, i) ({ \
201 qemu_build_assert(sizeof(*ptr) <= ATOMIC_REG_SIZE); \
202 qatomic_xchg__nocheck(ptr, i); \
206 #define qatomic_cmpxchg__nocheck(ptr, old, new) ({ \
207 typeof_strip_qual(*ptr) _old = (old); \
208 (void)__atomic_compare_exchange_n(ptr, &_old, new, false, \
213 #define qatomic_cmpxchg(ptr, old, new) ({ \
214 qemu_build_assert(sizeof(*ptr) <= ATOMIC_REG_SIZE); \
215 qatomic_cmpxchg__nocheck(ptr, old, new); \
219 #define qatomic_fetch_inc(ptr) __atomic_fetch_add(ptr, 1, __ATOMIC_SEQ_CST)
220 #define qatomic_fetch_dec(ptr) __atomic_fetch_sub(ptr, 1, __ATOMIC_SEQ_CST)
222 #define qatomic_fetch_add(ptr, n) __atomic_fetch_add(ptr, n, __ATOMIC_SEQ_CST)
223 #define qatomic_fetch_sub(ptr, n) __atomic_fetch_sub(ptr, n, __ATOMIC_SEQ_CST)
224 #define qatomic_fetch_and(ptr, n) __atomic_fetch_and(ptr, n, __ATOMIC_SEQ_CST)
225 #define qatomic_fetch_or(ptr, n) __atomic_fetch_or(ptr, n, __ATOMIC_SEQ_CST)
226 #define qatomic_fetch_xor(ptr, n) __atomic_fetch_xor(ptr, n, __ATOMIC_SEQ_CST)
228 #define qatomic_inc_fetch(ptr) __atomic_add_fetch(ptr, 1, __ATOMIC_SEQ_CST)
229 #define qatomic_dec_fetch(ptr) __atomic_sub_fetch(ptr, 1, __ATOMIC_SEQ_CST)
230 #define qatomic_add_fetch(ptr, n) __atomic_add_fetch(ptr, n, __ATOMIC_SEQ_CST)
231 #define qatomic_sub_fetch(ptr, n) __atomic_sub_fetch(ptr, n, __ATOMIC_SEQ_CST)
232 #define qatomic_and_fetch(ptr, n) __atomic_and_fetch(ptr, n, __ATOMIC_SEQ_CST)
233 #define qatomic_or_fetch(ptr, n) __atomic_or_fetch(ptr, n, __ATOMIC_SEQ_CST)
234 #define qatomic_xor_fetch(ptr, n) __atomic_xor_fetch(ptr, n, __ATOMIC_SEQ_CST)
237 #define qatomic_inc(ptr) \
238 ((void) __atomic_fetch_add(ptr, 1, __ATOMIC_SEQ_CST))
239 #define qatomic_dec(ptr) \
240 ((void) __atomic_fetch_sub(ptr, 1, __ATOMIC_SEQ_CST))
241 #define qatomic_add(ptr, n) \
242 ((void) __atomic_fetch_add(ptr, n, __ATOMIC_SEQ_CST))
243 #define qatomic_sub(ptr, n) \
244 ((void) __atomic_fetch_sub(ptr, n, __ATOMIC_SEQ_CST))
245 #define qatomic_and(ptr, n) \
246 ((void) __atomic_fetch_and(ptr, n, __ATOMIC_SEQ_CST))
247 #define qatomic_or(ptr, n) \
248 ((void) __atomic_fetch_or(ptr, n, __ATOMIC_SEQ_CST))
249 #define qatomic_xor(ptr, n) \
250 ((void) __atomic_fetch_xor(ptr, n, __ATOMIC_SEQ_CST))
276 # define qatomic_set_mb(ptr, i) \
277 ({ (void)qatomic_xchg(ptr, i); smp_mb__after_rmw(); })
279 # define qatomic_set_mb(ptr, i) \
280 ({ qatomic_store_release(ptr, i); smp_mb(); })
283 #define qatomic_fetch_inc_nonzero(ptr) ({ \
284 typeof_strip_qual(*ptr) _oldn = qatomic_read(ptr); \
285 while (_oldn && qatomic_cmpxchg(ptr, _oldn, _oldn + 1) != _oldn) { \
286 _oldn = qatomic_read(ptr); \
319 int64_t qatomic_read_i64(const int64_t *ptr);
320 uint64_t qatomic_read_u64(const uint64_t *ptr);
321 void qatomic_set_i64(int64_t *ptr, int64_t val);
322 void qatomic_set_u64(uint64_t *ptr, uint64_t val);