aboutsummaryrefslogtreecommitdiff
path: root/platform/linux-generic/odp_queue_lf.c
diff options
context:
space:
mode:
authorPetri Savolainen <petri.savolainen@linaro.org>2018-06-04 14:18:12 +0300
committerMaxim Uvarov <maxim.uvarov@linaro.org>2018-06-07 15:49:41 +0300
commitc3c447c96ab63092461dee2bac607f59a21bf8de (patch)
tree5bca051dc1d0cbc0012fdac90775772663afee0f /platform/linux-generic/odp_queue_lf.c
parentc7bf6a71fe08f3ba8228eced708c9d05496a825a (diff)
linux-gen: queue_lf: wrap is_lock_free function
Wrap GCC built-in __atomic_is_lock_free function so that it can be overridden on ARMv8. Signed-off-by: Petri Savolainen <petri.savolainen@linaro.org> Reviewed-by: Bill Fischofer <bill.fischofer@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
Diffstat (limited to 'platform/linux-generic/odp_queue_lf.c')
-rw-r--r--platform/linux-generic/odp_queue_lf.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/platform/linux-generic/odp_queue_lf.c b/platform/linux-generic/odp_queue_lf.c
index b3cfbdbe7..1c3c6bc45 100644
--- a/platform/linux-generic/odp_queue_lf.c
+++ b/platform/linux-generic/odp_queue_lf.c
@@ -52,6 +52,11 @@ static inline int atomic_cas_acq_u128(u128_t *atomic, u128_t old_val,
__ATOMIC_RELAXED);
}
+static inline int atomic_is_lockfree_u128(void)
+{
+ return __atomic_is_lock_free(16, NULL);
+}
+
#else
/* These definitions enable build in non 128 bit compatible systems.
@@ -86,6 +91,11 @@ static inline int atomic_cas_acq_u128(u128_t *atomic, u128_t old_val,
return atomic_cas_rel_u128(atomic, old_val, new_val);
}
+static inline int atomic_is_lockfree_u128(void)
+{
+ return 0;
+}
+
#endif
/* Node in lock-free ring */
@@ -263,12 +273,10 @@ uint32_t queue_lf_init_global(uint32_t *queue_lf_size,
queue_lf_func_t *lf_func)
{
odp_shm_t shm;
- bool lockfree = 0;
+ int lockfree;
/* 16 byte lockfree CAS operation is needed. */
-#ifdef __SIZEOF_INT128__
- lockfree = __atomic_is_lock_free(16, NULL);
-#endif
+ lockfree = atomic_is_lockfree_u128();
ODP_DBG("\nLock-free queue init\n");
ODP_DBG(" u128 lock-free: %i\n\n", lockfree);