diff options
| author | Ivan Maidanski <ivmai@mail.ru> | 2012-10-02 11:24:16 +0400 |
|---|---|---|
| committer | Ivan Maidanski <ivmai@mail.ru> | 2012-10-02 11:26:59 +0400 |
| commit | 7de00cfaffdfed8bedbfdf01bbdfbaecdb40d5f6 (patch) | |
| tree | b6cbb7bd485cd6bac6f45d45f85fe3e2e93237e5 | |
| parent | 7c7a2c674227a12f2ae5928325568a087e67c49d (diff) | |
| download | libatomic_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.h | 17 |
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 |
