Disable sys_membarrier
[userspace-rcu.git] / urcu / map / urcu.h
index ea12f346306221e08812e9ad5fd1f2346be619d5..3fae95fbdfafa6883b44ad1864cbfd85013321c5 100644 (file)
 #define RCU_MEMBARRIER
 #endif
 
+/*
+ * RCU_MEMBARRIER is only possibly available on Linux. Fallback to
+ * RCU_MB
+ * otherwise.
+ */
+#if !defined(__linux__) && defined(RCU_MEMBARRIER)
+#undef RCU_MEMBARRIER
+#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
+#undef RCU_MEMBARRIER
+#define RCU_MB
+#endif
+
 #ifdef RCU_MEMBARRIER
 
 #define rcu_read_lock                  rcu_read_lock_memb
 #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
 
This page took 0.023834 seconds and 4 git commands to generate.