svm/atomics: add clib_atomic_swap_rel_n 73/18473/2
authorFlorin Coras <fcoras@cisco.com>
Fri, 22 Mar 2019 04:17:43 +0000 (21:17 -0700)
committerDamjan Marion <dmarion@me.com>
Fri, 22 Mar 2019 17:30:17 +0000 (17:30 +0000)
Change-Id: Iea2c173000570043beafef58ca923463ce76d872
Signed-off-by: Florin Coras <fcoras@cisco.com>
src/svm/svm_fifo.h
src/vppinfra/atomics.h

index 6c3940d..59d7ee0 100644 (file)
@@ -173,7 +173,7 @@ svm_fifo_set_event (svm_fifo_t * f)
 {
   /* return __sync_lock_test_and_set (&f->has_event, 1) == 0;
      return __sync_bool_compare_and_swap (&f->has_event, 0, 1); */
-  return !__atomic_exchange_n (&f->has_event, 1, __ATOMIC_RELEASE);
+  return !clib_atomic_swap_rel_n (&f->has_event, 1);
 }
 
 /**
@@ -184,7 +184,7 @@ svm_fifo_set_event (svm_fifo_t * f)
 always_inline void
 svm_fifo_unset_event (svm_fifo_t * f)
 {
-  __atomic_exchange_n (&f->has_event, 0, __ATOMIC_ACQUIRE);
+  clib_atomic_swap_acq_n (&f->has_event, 0);
 }
 
 svm_fifo_t *svm_fifo_create (u32 data_size_in_bytes);
index 8084bdc..6fe3af2 100644 (file)
@@ -43,6 +43,7 @@
 #define clib_atomic_load_acq_n(a) __atomic_load_n((a), __ATOMIC_ACQUIRE)
 #define clib_atomic_store_rel_n(a, b) __atomic_store_n ((a), (b), __ATOMIC_RELEASE)
 #define clib_atomic_swap_acq_n(a, b) __atomic_exchange_n ((a), (b), __ATOMIC_ACQUIRE)
+#define clib_atomic_swap_rel_n(a, b) __atomic_exchange_n ((a), (b), __ATOMIC_RELEASE)
 
 #define clib_atomic_fetch_add_rel(a, b) __atomic_fetch_add((a), (b), __ATOMIC_RELEASE)
 #define clib_atomic_fetch_sub_rel(a, b) __atomic_fetch_sub((a), (b), __ATOMIC_RELEASE)