25 #ifndef ATOMIC_GSSIZE_H_INCLUDED
26 #define ATOMIC_GSSIZE_H_INCLUDED
51 return (gssize) __atomic_fetch_add(&a->
value, add, __ATOMIC_SEQ_CST);
57 return (gssize) __atomic_fetch_sub(&a->
value, sub, __ATOMIC_SEQ_CST);
63 return (gssize) __atomic_fetch_add(&a->
value, 1, __ATOMIC_SEQ_CST);
69 return (gssize) __atomic_fetch_sub(&a->
value, 1, __ATOMIC_SEQ_CST);
75 return (gssize) __atomic_load_n(&a->
value, __ATOMIC_SEQ_CST);
81 __atomic_store_n(&a->
value,
value, __ATOMIC_SEQ_CST);
87 return (gsize) __atomic_load_n(&a->
value, __ATOMIC_SEQ_CST);
99 return (gsize) a->
value;
111 return (gsize) __atomic_fetch_or(&a->
value,
value, __ATOMIC_SEQ_CST);
117 return (gsize) __atomic_fetch_xor(&a->
value,
value, __ATOMIC_SEQ_CST);
123 return (gsize) __atomic_fetch_and(&a->
value,
value, __ATOMIC_SEQ_CST);
126 static inline gboolean
127 atomic_gssize_compare_and_exchange(
atomic_gssize *a, gssize oldval, gssize newval)
129 return !!__atomic_compare_exchange_n(&a->
value, &oldval, newval, FALSE,
130 __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST);
136 gssize oldval = atomic_gssize_get(a);
138 while (!atomic_gssize_compare_and_exchange(a, oldval,
value))
140 oldval = atomic_gssize_get(a);
G_STATIC_ASSERT(sizeof(gssize)==sizeof(gpointer))
Definition: atomic-gssize.h:33
gssize value
Definition: atomic-gssize.h:34
GString * value
Definition: test_decode.c:28