From 7de00cfaffdfed8bedbfdf01bbdfbaecdb40d5f6 Mon Sep 17 00:00:00 2001 From: Ivan Maidanski Date: Tue, 2 Oct 2012 11:24:16 +0400 Subject: [PATCH] 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). --- src/atomic_ops/generalize.h | 17 +++++++++++++++-- 1 file 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 -- 2.7.4