|
|
|
@ -434,6 +434,9 @@ INLINE uint64_t atomic64_get_na(const atomic64 *u) { |
|
|
|
INLINE void atomic64_set(atomic64 *u, uint64_t a) { |
|
|
|
g_atomic_pointer_set(&u->p, (void *) a); |
|
|
|
} |
|
|
|
INLINE gboolean atomic64_set_if(atomic64 *u, uint64_t a, uint64_t i) { |
|
|
|
return g_atomic_pointer_compare_and_exchange(&u->p, (void *) i, (void *) a); |
|
|
|
} |
|
|
|
INLINE void atomic64_set_na(atomic64 *u, uint64_t a) { |
|
|
|
u->p = (void *) a; |
|
|
|
} |
|
|
|
@ -481,6 +484,16 @@ INLINE void atomic64_set(atomic64 *u, uint64_t a) { |
|
|
|
u->u = a; |
|
|
|
mutex_unlock(&__atomic64_mutex); |
|
|
|
} |
|
|
|
INLINE gboolean atomic64_set_if(atomic64 *u, uint64_t a, uint64_t i) { |
|
|
|
gboolean done = TRUE; |
|
|
|
mutex_lock(&__atomic64_mutex); |
|
|
|
if (u->u == i) |
|
|
|
u->u = a; |
|
|
|
else |
|
|
|
done = FALSE; |
|
|
|
mutex_unlock(&__atomic64_mutex); |
|
|
|
return done; |
|
|
|
} |
|
|
|
INLINE void atomic64_set_na(atomic64 *u, uint64_t a) { |
|
|
|
u->u = a; |
|
|
|
} |
|
|
|
|