aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/grpc/impl/codegen/atm_gcc_atomic.h
diff options
context:
space:
mode:
authorGravatar Craig Tiller <ctiller@google.com>2017-02-21 10:24:00 -0800
committerGravatar Craig Tiller <ctiller@google.com>2017-02-21 10:24:00 -0800
commit7f4d30a0321a042d4f8512815c1029cbaad6fac8 (patch)
treeb57bd7f130565b98224eb0dc4f793de162979186 /include/grpc/impl/codegen/atm_gcc_atomic.h
parent3d826b9e0acf79466726c5ef188975cb3cec45e0 (diff)
Separate CAS/ADD RMWs
Diffstat (limited to 'include/grpc/impl/codegen/atm_gcc_atomic.h')
-rw-r--r--include/grpc/impl/codegen/atm_gcc_atomic.h23
1 files changed, 14 insertions, 9 deletions
diff --git a/include/grpc/impl/codegen/atm_gcc_atomic.h b/include/grpc/impl/codegen/atm_gcc_atomic.h
index e5a623f723..4bd3b25741 100644
--- a/include/grpc/impl/codegen/atm_gcc_atomic.h
+++ b/include/grpc/impl/codegen/atm_gcc_atomic.h
@@ -41,12 +41,17 @@
typedef intptr_t gpr_atm;
#ifdef GPR_LOW_LEVEL_COUNTERS
-extern gpr_atm gpr_counter_rmw;
+extern gpr_atm gpr_counter_atm_cas;
+extern gpr_atm gpr_counter_atm_add;
#define GPR_ATM_INC_COUNTER(counter) \
__atomic_fetch_add(&counter, 1, __ATOMIC_RELAXED)
-#define GPR_ATM_INC_RMW_THEN(blah) (GPR_ATM_INC_COUNTER(gpr_counter_rmw), blah)
+#define GPR_ATM_INC_CAS_THEN(blah) \
+ (GPR_ATM_INC_COUNTER(gpr_counter_atm_cas), blah)
+#define GPR_ATM_INC_ADD_THEN(blah) \
+ (GPR_ATM_INC_COUNTER(gpr_counter_atm_add), blah)
#else
-#define GPR_ATM_INC_RMW_THEN(blah) blah
+#define GPR_ATM_INC_CAS_THEN(blah) blah
+#define GPR_ATM_INC_ADD_THEN(blah) blah
#endif
#define gpr_atm_full_barrier() (__atomic_thread_fence(__ATOMIC_SEQ_CST))
@@ -59,28 +64,28 @@ extern gpr_atm gpr_counter_rmw;
(__atomic_store_n((p), (intptr_t)(value), __ATOMIC_RELAXED))
#define gpr_atm_no_barrier_fetch_add(p, delta) \
- GPR_ATM_INC_RMW_THEN( \
+ GPR_ATM_INC_ADD_THEN( \
__atomic_fetch_add((p), (intptr_t)(delta), __ATOMIC_RELAXED))
#define gpr_atm_full_fetch_add(p, delta) \
- GPR_ATM_INC_RMW_THEN( \
+ GPR_ATM_INC_ADD_THEN( \
__atomic_fetch_add((p), (intptr_t)(delta), __ATOMIC_ACQ_REL))
static __inline int gpr_atm_no_barrier_cas(gpr_atm *p, gpr_atm o, gpr_atm n) {
- return GPR_ATM_INC_RMW_THEN(__atomic_compare_exchange_n(
+ return GPR_ATM_INC_CAS_THEN(__atomic_compare_exchange_n(
p, &o, n, 0, __ATOMIC_RELAXED, __ATOMIC_RELAXED));
}
static __inline int gpr_atm_acq_cas(gpr_atm *p, gpr_atm o, gpr_atm n) {
- return GPR_ATM_INC_RMW_THEN(__atomic_compare_exchange_n(
+ return GPR_ATM_INC_CAS_THEN(__atomic_compare_exchange_n(
p, &o, n, 0, __ATOMIC_ACQUIRE, __ATOMIC_RELAXED));
}
static __inline int gpr_atm_rel_cas(gpr_atm *p, gpr_atm o, gpr_atm n) {
- return GPR_ATM_INC_RMW_THEN(__atomic_compare_exchange_n(
+ return GPR_ATM_INC_CAS_THEN(__atomic_compare_exchange_n(
p, &o, n, 0, __ATOMIC_RELEASE, __ATOMIC_RELAXED));
}
#define gpr_atm_full_xchg(p, n) \
- GPR_ATM_INC_RMW_THEN(__atomic_exchange_n((p), (n), __ATOMIC_ACQ_REL))
+ GPR_ATM_INC_CAS_THEN(__atomic_exchange_n((p), (n), __ATOMIC_ACQ_REL))
#endif /* GRPC_IMPL_CODEGEN_ATM_GCC_ATOMIC_H */