[rtems-libbsd commit] rtemsbsd/atomic: Return a value for CMPSET

Joel Sherrill joel at rtems.org
Fri Oct 8 14:02:07 UTC 2021


Module:    rtems-libbsd
Branch:    6-freebsd-12
Commit:    38f3de6469a43ff053f8c082175ca67b0c489af9
Changeset: http://git.rtems.org/rtems-libbsd/commit/?id=38f3de6469a43ff053f8c082175ca67b0c489af9

Author:    Kinsey Moore <kinsey.moore at oarcorp.com>
Date:      Thu Oct  7 15:38:51 2021 -0500

rtemsbsd/atomic: Return a value for CMPSET

When the cmpset and fcmpset functions were refactored, the return value
of the operation was discarded instead of being returned for SMP builds
outside of gcc 4.x. This had the effect of turning these functions into
a long busywait loop that eventually failed due to integer overflow.

This patch restores the use of the return value of the atomic
operations.

---

 rtemsbsd/include/machine/atomic.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/rtemsbsd/include/machine/atomic.h b/rtemsbsd/include/machine/atomic.h
index 9465fef..f25dc5d 100644
--- a/rtemsbsd/include/machine/atomic.h
+++ b/rtemsbsd/include/machine/atomic.h
@@ -530,7 +530,7 @@ atomic_clear_rel_long(volatile long *p, long v)
 #elif defined(_RTEMS_BSD_MACHINE_ATOMIC_USE_STDATOMIC)
 #define _ATOMIC_CMPSET(T, p, cmp, set, mo) \
 	atomic_##T *q = (atomic_##T *)RTEMS_DEVOLATILE(T *, p); \
-	atomic_compare_exchange_strong_explicit(q, &cmp, set, \
+	rv = atomic_compare_exchange_strong_explicit(q, &cmp, set, \
             mo, memory_order_relaxed)
 #else
 #define _ATOMIC_CMPSET(T, p, cmp, set, mo) \
@@ -676,7 +676,7 @@ atomic_cmpset_rel_ptr(volatile uintptr_t *p, uintptr_t cmp, uintptr_t set)
 #elif defined(_RTEMS_BSD_MACHINE_ATOMIC_USE_STDATOMIC)
 #define _ATOMIC_FCMPSET(T, p, cmp, set, mo) \
 	atomic_##T *q = (atomic_##T *)RTEMS_DEVOLATILE(T *, p); \
-	atomic_compare_exchange_strong_explicit(q, cmp, set, \
+	rv = atomic_compare_exchange_strong_explicit(q, cmp, set, \
            mo, memory_order_relaxed)
 #else
 #define _ATOMIC_FCMPSET(T, p, cmp, set, mo) \



More information about the vc mailing list