This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH 1/2] Add atomic_exchange_relaxed.
- From: Torvald Riegel <triegel at redhat dot com>
- To: GLIBC Devel <libc-alpha at sourceware dot org>
- Date: Wed, 27 Jul 2016 23:43:06 +0200
- Subject: [PATCH 1/2] Add atomic_exchange_relaxed.
- Authentication-results: sourceware.org; auth=none
- References: <1469655533.19224.27.camel@localhost.localdomain>
Tested on x86_64-linux.
* include/atomic.h (atomic_exchange_relaxed): New.
commit 9928bcc40ed43bf9959fe7e3d4f042c5c01c6448
Author: Torvald Riegel <triegel@redhat.com>
Date: Thu Jul 21 14:31:28 2016 +0200
Add atomic_exchange_relaxed.
* include/atomic.h (atomic_exchange_relaxed): New.
diff --git a/include/atomic.h b/include/atomic.h
index ad3db25..129ee24 100644
--- a/include/atomic.h
+++ b/include/atomic.h
@@ -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))