|
|
|
@ -437,11 +437,13 @@ INLINE void atomic64_set(atomic64 *u, uint64_t a) { |
|
|
|
INLINE void atomic64_set_na(atomic64 *u, uint64_t a) { |
|
|
|
u->p = (void *) a; |
|
|
|
} |
|
|
|
INLINE void atomic64_add(atomic64 *u, uint64_t a) { |
|
|
|
g_atomic_pointer_add(&u->p, a); |
|
|
|
INLINE uint64_t atomic64_add(atomic64 *u, uint64_t a) { |
|
|
|
return g_atomic_pointer_add(&u->p, a); |
|
|
|
} |
|
|
|
INLINE void atomic64_add_na(atomic64 *u, uint64_t a) { |
|
|
|
INLINE uint64_t atomic64_add_na(atomic64 *u, uint64_t a) { |
|
|
|
uint64_t old = (uint64_t) u->p; |
|
|
|
u->p = (void *) (((uint64_t) u->p) + a); |
|
|
|
return old; |
|
|
|
} |
|
|
|
INLINE uint64_t atomic64_get_set(atomic64 *u, uint64_t a) { |
|
|
|
uint64_t old; |
|
|
|
@ -482,13 +484,17 @@ INLINE void atomic64_set(atomic64 *u, uint64_t a) { |
|
|
|
INLINE void atomic64_set_na(atomic64 *u, uint64_t a) { |
|
|
|
u->u = a; |
|
|
|
} |
|
|
|
INLINE void atomic64_add(atomic64 *u, uint64_t a) { |
|
|
|
INLINE uint64_t atomic64_add(atomic64 *u, uint64_t a) { |
|
|
|
mutex_lock(&__atomic64_mutex); |
|
|
|
uint64_t old = u->u; |
|
|
|
u->u += a; |
|
|
|
mutex_unlock(&__atomic64_mutex); |
|
|
|
return old; |
|
|
|
} |
|
|
|
INLINE void atomic64_add_na(atomic64 *u, uint64_t a) { |
|
|
|
INLINE uint64_t atomic64_add_na(atomic64 *u, uint64_t a) { |
|
|
|
uint64_t old = u->u; |
|
|
|
u->u += a; |
|
|
|
return old; |
|
|
|
} |
|
|
|
INLINE uint64_t atomic64_get_set(atomic64 *u, uint64_t a) { |
|
|
|
uint64_t old; |
|
|
|
@ -501,11 +507,11 @@ INLINE uint64_t atomic64_get_set(atomic64 *u, uint64_t a) { |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
INLINE void atomic64_inc(atomic64 *u) { |
|
|
|
atomic64_add(u, 1); |
|
|
|
INLINE uint64_t atomic64_inc(atomic64 *u) { |
|
|
|
return atomic64_add(u, 1); |
|
|
|
} |
|
|
|
INLINE void atomic64_dec(atomic64 *u) { |
|
|
|
atomic64_add(u, -1); |
|
|
|
INLINE uint64_t atomic64_dec(atomic64 *u) { |
|
|
|
return atomic64_add(u, -1); |
|
|
|
} |
|
|
|
INLINE void atomic64_local_copy_zero(atomic64 *dst, atomic64 *src) { |
|
|
|
atomic64_set_na(dst, atomic64_get_set(src, 0)); |
|
|
|
|