X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=urcu%2Fmap%2Furcu.h;h=3fae95fbdfafa6883b44ad1864cbfd85013321c5;hb=de07ab9691f011d2458be8c1239d62aaa6cb6100;hp=ea12f346306221e08812e9ad5fd1f2346be619d5;hpb=d4b99c015229978810319cfd42e1c9763772fad8;p=userspace-rcu.git diff --git a/urcu/map/urcu.h b/urcu/map/urcu.h index ea12f34..3fae95f 100644 --- a/urcu/map/urcu.h +++ b/urcu/map/urcu.h @@ -38,6 +38,25 @@ #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 @@ -70,17 +89,7 @@ #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) @@ -114,17 +123,7 @@ #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) @@ -158,17 +157,7 @@ #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