]> sourceware.org Git - glibc.git/commitdiff
Add atomic_exchange_relaxed.
authorTorvald Riegel <triegel@redhat.com>
Thu, 21 Jul 2016 12:31:28 +0000 (14:31 +0200)
committerTorvald Riegel <triegel@redhat.com>
Fri, 5 Aug 2016 14:06:22 +0000 (16:06 +0200)
* include/atomic.h (atomic_exchange_relaxed): New.

ChangeLog
include/atomic.h

index 1e63a386fe4c56564615be5279847bdf8fd63d64..205da062e660a4382fa682da99d53f29d2a0cf39 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2016-08-05  Torvald Riegel  <triegel@redhat.com>
+
+       * include/atomic.h (atomic_exchange_relaxed): New.
+
 2016-08-04  Joseph Myers  <joseph@codesourcery.com>
 
        * math/e_scalb.c: Do not include <fenv.h>.
index ad3db2562eefaf3df0bb6978e73efcd13af10eb4..129ee24426776de342335a2456f477516cb9d346 100644 (file)
@@ -588,6 +588,9 @@ void __atomic_link_error (void);
   __atomic_compare_exchange_n ((mem), (expected), (desired), 1,                      \
     __ATOMIC_RELEASE, __ATOMIC_RELAXED); })
 
+# define atomic_exchange_relaxed(mem, desired) \
+  ({ __atomic_check_size((mem));                                             \
+  __atomic_exchange_n ((mem), (desired), __ATOMIC_RELAXED); })
 # define atomic_exchange_acquire(mem, desired) \
   ({ __atomic_check_size((mem));                                             \
   __atomic_exchange_n ((mem), (desired), __ATOMIC_ACQUIRE); })
@@ -684,6 +687,12 @@ void __atomic_link_error (void);
    *(expected) == __atg103_expected; })
 # endif
 
+/* XXX Fall back to acquire MO because archs do not define a weaker
+   atomic_exchange.  */
+# ifndef atomic_exchange_relaxed
+#  define atomic_exchange_relaxed(mem, val) \
+   atomic_exchange_acq ((mem), (val))
+# endif
 # ifndef atomic_exchange_acquire
 #  define atomic_exchange_acquire(mem, val) \
    atomic_exchange_acq ((mem), (val))
This page took 0.163017 seconds and 5 git commands to generate.