summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Maidanski <ivmai@mail.ru>2012-10-02 11:24:16 +0400
committerIvan Maidanski <ivmai@mail.ru>2012-10-02 11:26:59 +0400
commit7de00cfaffdfed8bedbfdf01bbdfbaecdb40d5f6 (patch)
treeb6cbb7bd485cd6bac6f45d45f85fe3e2e93237e5
parent7c7a2c674227a12f2ae5928325568a087e67c49d (diff)
downloadlibatomic_ops-7de00cfaffdfed8bedbfdf01bbdfbaecdb40d5f6.tar.gz
Add no-barrier double_compare_and_swap to generalization
* src/atomic_ops/generalize.h (AO_double_compare_and_swap): New function (only if AO_HAVE_compare_double_and_swap_double and not AO_HAVE_double_compare_and_swap) completing double-CAS family; reformat comment. * src/atomic_ops/generalize.h (AO_HAVE_double_compare_and_swap): Define macro (accompanying AO_double_compare_and_swap).
-rw-r--r--src/atomic_ops/generalize.h17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/atomic_ops/generalize.h b/src/atomic_ops/generalize.h
index 6f72e22..550edad 100644
--- a/src/atomic_ops/generalize.h
+++ b/src/atomic_ops/generalize.h
@@ -1517,8 +1517,21 @@
# endif
#endif
-/* NEC LE-IT: Convenience functions for AO_double compare and swap which */
-/* types and reads easier in code */
+/* Convenience functions for AO_double compare-and-swap which types and */
+/* reads easier in code. */
+#if defined(AO_HAVE_compare_double_and_swap_double) \
+ && !defined(AO_HAVE_double_compare_and_swap)
+ AO_INLINE int
+ AO_double_compare_and_swap(volatile AO_double_t *addr,
+ AO_double_t old_val, AO_double_t new_val)
+ {
+ return AO_compare_double_and_swap_double(addr,
+ old_val.AO_val1, old_val.AO_val2,
+ new_val.AO_val1, new_val.AO_val2);
+ }
+# define AO_HAVE_double_compare_and_swap
+#endif
+
#if defined(AO_HAVE_compare_double_and_swap_double_release) \
&& !defined(AO_HAVE_double_compare_and_swap_release)
AO_INLINE int