summaryrefslogtreecommitdiff
path: root/lib/ovs-atomic-pthreads.h
diff options
context:
space:
mode:
authorJarno Rajahalme <jrajahalme@nicira.com>2014-07-07 13:18:46 -0700
committerJarno Rajahalme <jrajahalme@nicira.com>2014-07-07 13:19:45 -0700
commit25045d755e1161fd6d0097db683a91d9bd5d2913 (patch)
treed2cf8f54135c597eea0172d515ff1188b42d505e /lib/ovs-atomic-pthreads.h
parent541bfad20a51d6dc3c051368d70d49e13b040fb9 (diff)
downloadopenvswitch-25045d755e1161fd6d0097db683a91d9bd5d2913.tar.gz
lib/ovs-atomic: Add atomic compare_exchange.
Add support for atomic compare_exchange operations. Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
Diffstat (limited to 'lib/ovs-atomic-pthreads.h')
-rw-r--r--lib/ovs-atomic-pthreads.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/ovs-atomic-pthreads.h b/lib/ovs-atomic-pthreads.h
index 33270c6a2..12234e79e 100644
--- a/lib/ovs-atomic-pthreads.h
+++ b/lib/ovs-atomic-pthreads.h
@@ -67,6 +67,16 @@ atomic_signal_fence(memory_order order OVS_UNUSED)
#define atomic_read_explicit(SRC, DST, ORDER) \
((void) (ORDER), atomic_read(SRC, DST))
+#define atomic_compare_exchange_strong(DST, EXP, SRC) \
+ atomic_compare_exchange_locked(DST, EXP, SRC)
+#define atomic_compare_exchange_strong_explicit(DST, EXP, SRC, ORD1, ORD2) \
+ ((void) (ORD1), (void) (ORD2), \
+ atomic_compare_exchange_strong(DST, EXP, SRC))
+#define atomic_compare_exchange_weak \
+ atomic_compare_exchange_strong
+#define atomic_compare_exchange_weak_explicit \
+ atomic_compare_exchange_strong_explicit
+
#define atomic_add(RMW, ARG, ORIG) atomic_op_locked(RMW, add, ARG, ORIG)
#define atomic_sub(RMW, ARG, ORIG) atomic_op_locked(RMW, sub, ARG, ORIG)
#define atomic_or( RMW, ARG, ORIG) atomic_op_locked(RMW, or, ARG, ORIG)