Add no-barrier double_compare_and_swap to generalization
authorIvan Maidanski <ivmai@mail.ru>
Tue, 2 Oct 2012 07:24:16 +0000 (11:24 +0400)
committerIvan Maidanski <ivmai@mail.ru>
Tue, 2 Oct 2012 07:26:59 +0000 (11:26 +0400)
* 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).

src/atomic_ops/generalize.h

index 6f72e22..550edad 100644 (file)
 # 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