9 #ifndef _OsAtomicsAndroid_H_ // [ 10 #define _OsAtomicsAndroid_H_ 12 #include <cutils/atomic.h> 15 #define USE_GCC_ATOMICS_ON_ANDROID 17 #ifdef __x86_64__ // [ 18 # error 64-bit Android systems are not supported yet. 19 #endif // __x86_64__ ] 48 #ifdef USE_GCC_ATOMICS_ON_ANDROID 87 {
return (T)android_atomic_add((
int32_t)val, &
mVal);}
90 {
return (T)android_atomic_add(-(
int32_t)val, &
mVal);}
93 {
return (T)android_atomic_and((
int32_t)val, &
mVal);}
103 {
store(val);
return val;}
107 #ifdef USE_GCC_ATOMICS_ON_ANDROID 108 return (T)__sync_fetch_and_add(&
mVal, 1)+1;
110 return (T)android_atomic_inc(&
mVal)+1;
116 #ifdef USE_GCC_ATOMICS_ON_ANDROID 117 return((T)__sync_fetch_and_sub(&
mVal, 1)-1);
119 return((T)android_atomic_dec(&
mVal)-1);
125 #ifdef USE_GCC_ATOMICS_ON_ANDROID 126 return((T)__sync_add_and_fetch(&
mVal, 1));
128 return((T)android_atomic_inc(&
mVal));
134 #ifdef USE_GCC_ATOMICS_ON_ANDROID 135 return((T)__sync_sub_and_fetch(&
mVal, 1));
137 return((T)android_atomic_dec(&
mVal));
180 operator void*()
const 195 {
return (
void*)android_atomic_add((
int32_t)val, &
mVal);}
198 {
return (
void*)android_atomic_add(-(
int32_t)val, &
mVal);}
234 {
return (T*)OsAtomicVoidPtr::operator
void*();}
272 #define OsAtomicLight OsAtomic32 273 #define OsAtomicLightPtr OsAtomicPtr 281 #endif // _OsAtomicsAndroid_H_ ] void store(void *val,::memory_order=::memory_order_seq_cst)
Definition: OsAtomics.h:175
void * load(memory_order order=memory_order_seq_cst) const
Definition: OsAtomicsAndroid.h:177
T exchange(T val, memory_order=memory_order_seq_cst)
Definition: OsAtomicsAndroid.h:66
Definition: OsAtomicsAndroid.h:22
void * load(::memory_order=::memory_order_seq_cst) const
Definition: OsAtomics.h:178
OsAtomicPtr(T *val=NULL)
Definition: OsAtomicsAndroid.h:255
T operator=(T val)
Definition: OsAtomicsAndroid.h:102
T operator-=(T val)
Definition: OsAtomicsAndroid.h:144
void * exchange(void *val, memory_order order=memory_order_seq_cst)
Definition: OsAtomicsAndroid.h:183
void store(void *val, memory_order order=memory_order_seq_cst)
Definition: OsAtomicsAndroid.h:174
void * fetch_sub(ptrdiff_t val, memory_order order=memory_order_seq_cst)
Definition: OsAtomicsAndroid.h:197
T * fetch_sub(ptrdiff_t val, memory_order mo=memory_order_seq_cst)
Definition: OsAtomicsAndroid.h:250
T * operator-=(ptrdiff_t val)
Definition: OsAtomicsAndroid.h:263
T operator--()
Definition: OsAtomicsAndroid.h:132
void * operator=(void *val)
Definition: OsAtomicsAndroid.h:204
memory_order
Definition: OsAtomics.h:41
OsAtomicLight< unsigned long > OsAtomicLightULong
Definition: OsAtomicsAndroid.h:278
OsAtomic32< unsigned long > OsAtomicULong
Definition: OsAtomicsAndroid.h:166
Definition: OsAtomics.h:169
#define NULL
Definition: UtlDefs.h:29
bool is_lock_free() const
Definition: OsAtomicsAndroid.h:171
Definition: OsAtomicsAndroid.h:23
void * fetch_sub(ptrdiff_t val,::memory_order=::memory_order_seq_cst)
Definition: OsAtomics.h:194
bool compare_exchange(void *&expected, void *desired, memory_order order=memory_order_seq_cst)
Definition: OsAtomicsAndroid.h:188
OsAtomicLight< long > OsAtomicLightLong
Definition: OsAtomicsAndroid.h:277
void * fetch_add(ptrdiff_t val,::memory_order=::memory_order_seq_cst)
Definition: OsAtomics.h:191
T fetch_or(T val, memory_order=memory_order_seq_cst)
Definition: OsAtomicsAndroid.h:95
T operator++(int)
Definition: OsAtomicsAndroid.h:105
memory_order
Definition: OsAtomicsAndroid.h:21
OsAtomicVoidPtr(void *val=NULL)
Definition: OsAtomicsAndroid.h:202
T * fetch_add(ptrdiff_t val, memory_order mo=memory_order_seq_cst)
Definition: OsAtomicsAndroid.h:247
void * fetch_add(ptrdiff_t val, memory_order order=memory_order_seq_cst)
Definition: OsAtomicsAndroid.h:194
T operator--(int)
Definition: OsAtomicsAndroid.h:114
Definition: OsAtomicsAndroid.h:27
OsAtomicLight< int > OsAtomicLightInt
Definition: OsAtomicsAndroid.h:275
void * operator-=(ptrdiff_t val)
Definition: OsAtomicsAndroid.h:210
void fence(memory_order mo) const
Definition: OsAtomicsAndroid.h:244
Definition: OsAtomics.h:220
T operator++()
Definition: OsAtomicsAndroid.h:123
void fence(memory_order order) const
Definition: OsAtomicsAndroid.h:191
OsAtomic32< int > OsAtomicInt
Definition: OsAtomicsAndroid.h:163
OsAtomicLight< unsigned int > OsAtomicLightUInt
Definition: OsAtomicsAndroid.h:276
volatile int32_t mVal
Definition: OsAtomicsAndroid.h:156
T * operator=(T *val)
Definition: OsAtomicsAndroid.h:257
bool compare_exchange(T *&expected, T *desired, memory_order mo=memory_order_seq_cst)
Definition: OsAtomicsAndroid.h:241
T * load(memory_order mo=memory_order_seq_cst) const
Definition: OsAtomicsAndroid.h:230
bool is_lock_free() const
Definition: OsAtomicsAndroid.h:224
void store(T *val, memory_order mo=memory_order_seq_cst)
Definition: OsAtomicsAndroid.h:227
void fence(memory_order) const
Definition: OsAtomicsAndroid.h:83
void * operator+=(ptrdiff_t val)
Definition: OsAtomicsAndroid.h:207
void store(T val, memory_order order=memory_order_seq_cst)
Definition: OsAtomicsAndroid.h:33
T * operator+=(ptrdiff_t val)
Definition: OsAtomicsAndroid.h:260
Definition: OsAtomicsAndroid.h:22
T operator+=(T val)
Definition: OsAtomicsAndroid.h:141
T operator|=(T val)
Definition: OsAtomicsAndroid.h:150
signed int int32_t
Definition: stdint.h:77
Definition: OsAtomicsAndroid.h:23
OsAtomic32< long > OsAtomicLong
Definition: OsAtomicsAndroid.h:165
Definition: OsAtomicsAndroid.h:23
bool compare_exchange(T &expected, T desired, memory_order=memory_order_seq_cst)
Definition: OsAtomicsAndroid.h:73
T * exchange(T *val, memory_order mo=memory_order_seq_cst)
Definition: OsAtomicsAndroid.h:236
T load(memory_order=memory_order_seq_cst) const
Definition: OsAtomicsAndroid.h:57
T fetch_sub(T val, memory_order=memory_order_seq_cst)
Definition: OsAtomicsAndroid.h:89
Definition: OsAtomicsAndroid.h:22
OsAtomic32< unsigned int > OsAtomicUInt
Definition: OsAtomicsAndroid.h:164
T fetch_add(T val, memory_order=memory_order_seq_cst)
Definition: OsAtomicsAndroid.h:86
T operator&=(T val)
Definition: OsAtomicsAndroid.h:147
OsAtomicLight< bool > OsAtomicLightBool
Definition: OsAtomicsAndroid.h:279
bool is_lock_free() const
Definition: OsAtomicsAndroid.h:30
T fetch_and(T val, memory_order=memory_order_seq_cst)
Definition: OsAtomicsAndroid.h:92
void fence(::memory_order) const
Definition: OsAtomics.h:188