#define RCU_MB
#endif
+/*
+ * The ABI of sys_membarrier changed after its original implementation.
+ * Disable it for now. Use RCU_MB flavor instead.
+ */
#ifdef RCU_MEMBARRIER
-#include <syscall.h>
-
-/* If the headers do not support SYS_membarrier, statically use RCU_MB */
-#ifdef SYS_membarrier
-# define MEMBARRIER_EXPEDITED (1 << 0)
-# define MEMBARRIER_DELAYED (1 << 1)
-# define MEMBARRIER_QUERY (1 << 16)
-# define membarrier(...) syscall(SYS_membarrier, __VA_ARGS__)
-#else
-# undef RCU_MEMBARRIER
-# define RCU_MB
-#endif
+#undef RCU_MEMBARRIER
+#define RCU_MB
#endif
#ifdef RCU_MEMBARRIER
#define rcu_defer_barrier rcu_defer_barrier_memb
#define rcu_defer_barrier_thread rcu_defer_barrier_thread_memb
-/* Concurrent Data Structures */
-#define cds_lfq_node_init_rcu cds_lfq_node_init_rcu_memb
-#define cds_lfq_init_rcu cds_lfq_init_rcu_memb
-#define cds_lfq_destroy_rcu cds_lfq_destroy_rcu_memb
-#define cds_lfq_enqueue_rcu cds_lfq_enqueue_rcu_memb
-#define cds_lfq_dequeue_rcu cds_lfq_dequeue_rcu_memb
-
-#define cds_lfs_node_init_rcu cds_lfs_node_init_rcu_memb
-#define cds_lfs_init_rcu cds_lfs_init_rcu_memb
-#define cds_lfs_push_rcu cds_lfs_push_rcu_memb
-#define cds_lfs_pop_rcu cds_lfs_pop_rcu_memb
+#define rcu_flavor rcu_flavor_memb
#elif defined(RCU_SIGNAL)
#define rcu_defer_barrier rcu_defer_barrier_sig
#define rcu_defer_barrier_thread rcu_defer_barrier_thread_sig
-/* Concurrent Data Structures */
-#define cds_lfq_node_init_rcu cds_lfq_node_init_rcu_sig
-#define cds_lfq_init_rcu cds_lfq_init_rcu_sig
-#define cds_lfq_destroy_rcu cds_lfq_destroy_rcu_sig
-#define cds_lfq_enqueue_rcu cds_lfq_enqueue_rcu_sig
-#define cds_lfq_dequeue_rcu cds_lfq_dequeue_rcu_sig
-
-#define cds_lfs_node_init_rcu cds_lfs_node_init_rcu_sig
-#define cds_lfs_init_rcu cds_lfs_init_rcu_sig
-#define cds_lfs_push_rcu cds_lfs_push_rcu_sig
-#define cds_lfs_pop_rcu cds_lfs_pop_rcu_sig
+#define rcu_flavor rcu_flavor_sig
#elif defined(RCU_MB)
#define rcu_defer_barrier rcu_defer_barrier_mb
#define rcu_defer_barrier_thread rcu_defer_barrier_thread_mb
-/* Concurrent Data Structures */
-#define cds_lfq_node_init_rcu cds_lfq_node_init_rcu_mb
-#define cds_lfq_init_rcu cds_lfq_init_rcu_mb
-#define cds_lfq_destroy_rcu cds_lfq_destroy_rcu_mb
-#define cds_lfq_enqueue_rcu cds_lfq_enqueue_rcu_mb
-#define cds_lfq_dequeue_rcu cds_lfq_dequeue_rcu_mb
-
-#define cds_lfs_node_init_rcu cds_lfs_node_init_rcu_mb
-#define cds_lfs_init_rcu cds_lfs_init_rcu_mb
-#define cds_lfs_push_rcu cds_lfs_push_rcu_mb
-#define cds_lfs_pop_rcu cds_lfs_pop_rcu_mb
+#define rcu_flavor rcu_flavor_mb
#else