X-Git-Url: https://git.liburcu.org/?p=urcu.git;a=blobdiff_plain;f=urcu%2Fmap%2Furcu.h;h=77b37215734bfa163fbe680a3582a5b8a0b2af66;hp=dd7a6914b93f5c2325dae840824b89d1790b2259;hb=553b7eb9da3a223368abdf3f6a5ead35acf8a20b;hpb=f8fc437722856fefd5d415405d5ce8d79e8b6e96 diff --git a/urcu/map/urcu.h b/urcu/map/urcu.h index dd7a691..77b3721 100644 --- a/urcu/map/urcu.h +++ b/urcu/map/urcu.h @@ -38,44 +38,21 @@ #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 - -#ifdef RCU_MEMBARRIER -#include - -/* 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 -#endif - #ifdef RCU_MEMBARRIER #define rcu_read_lock rcu_read_lock_memb #define _rcu_read_lock _rcu_read_lock_memb #define rcu_read_unlock rcu_read_unlock_memb #define _rcu_read_unlock _rcu_read_unlock_memb +#define rcu_read_ongoing rcu_read_ongoing_memb +#define _rcu_read_ongoing _rcu_read_ongoing_memb #define rcu_register_thread rcu_register_thread_memb #define rcu_unregister_thread rcu_unregister_thread_memb #define rcu_init rcu_init_memb #define rcu_exit rcu_exit_memb #define synchronize_rcu synchronize_rcu_memb #define rcu_reader rcu_reader_memb -#define rcu_gp_ctr rcu_gp_ctr_memb +#define rcu_gp rcu_gp_memb #define get_cpu_call_rcu_data get_cpu_call_rcu_data_memb #define get_call_rcu_thread get_call_rcu_thread_memb @@ -88,28 +65,41 @@ #define create_all_cpu_call_rcu_data create_all_cpu_call_rcu_data_memb #define free_all_cpu_call_rcu_data free_all_cpu_call_rcu_data_memb #define call_rcu call_rcu_memb +#define call_rcu_data_free call_rcu_data_free_memb +#define call_rcu_before_fork call_rcu_before_fork_memb +#define call_rcu_after_fork_parent call_rcu_after_fork_parent_memb +#define call_rcu_after_fork_child call_rcu_after_fork_child_memb #define defer_rcu defer_rcu_memb #define rcu_defer_register_thread rcu_defer_register_thread_memb #define rcu_defer_unregister_thread rcu_defer_unregister_thread_memb #define rcu_defer_barrier rcu_defer_barrier_memb #define rcu_defer_barrier_thread rcu_defer_barrier_thread_memb +#define rcu_defer_exit rcu_defer_exit_memb #define rcu_flavor rcu_flavor_memb +#define rcu_yield_active rcu_yield_active_memb +#define rcu_rand_yield rcu_rand_yield_memb + +/* Specific to MEMBARRIER flavor */ +#define rcu_has_sys_membarrier rcu_has_sys_membarrier_memb + #elif defined(RCU_SIGNAL) #define rcu_read_lock rcu_read_lock_sig #define _rcu_read_lock _rcu_read_lock_sig #define rcu_read_unlock rcu_read_unlock_sig #define _rcu_read_unlock _rcu_read_unlock_sig +#define rcu_read_ongoing rcu_read_ongoing_sig +#define _rcu_read_ongoing _rcu_read_ongoing_sig #define rcu_register_thread rcu_register_thread_sig #define rcu_unregister_thread rcu_unregister_thread_sig #define rcu_init rcu_init_sig #define rcu_exit rcu_exit_sig #define synchronize_rcu synchronize_rcu_sig #define rcu_reader rcu_reader_sig -#define rcu_gp_ctr rcu_gp_ctr_sig +#define rcu_gp rcu_gp_sig #define get_cpu_call_rcu_data get_cpu_call_rcu_data_sig #define get_call_rcu_thread get_call_rcu_thread_sig @@ -122,28 +112,38 @@ #define create_all_cpu_call_rcu_data create_all_cpu_call_rcu_data_sig #define free_all_cpu_call_rcu_data free_all_cpu_call_rcu_data_sig #define call_rcu call_rcu_sig +#define call_rcu_data_free call_rcu_data_free_sig +#define call_rcu_before_fork call_rcu_before_fork_sig +#define call_rcu_after_fork_parent call_rcu_after_fork_parent_sig +#define call_rcu_after_fork_child call_rcu_after_fork_child_sig #define defer_rcu defer_rcu_sig #define rcu_defer_register_thread rcu_defer_register_thread_sig #define rcu_defer_unregister_thread rcu_defer_unregister_thread_sig #define rcu_defer_barrier rcu_defer_barrier_sig #define rcu_defer_barrier_thread rcu_defer_barrier_thread_sig +#define rcu_defer_exit rcu_defer_exit_sig #define rcu_flavor rcu_flavor_sig +#define rcu_yield_active rcu_yield_active_sig +#define rcu_rand_yield rcu_rand_yield_sig + #elif defined(RCU_MB) #define rcu_read_lock rcu_read_lock_mb #define _rcu_read_lock _rcu_read_lock_mb #define rcu_read_unlock rcu_read_unlock_mb #define _rcu_read_unlock _rcu_read_unlock_mb +#define rcu_read_ongoing rcu_read_ongoing_mb +#define _rcu_read_ongoing _rcu_read_ongoing_mb #define rcu_register_thread rcu_register_thread_mb #define rcu_unregister_thread rcu_unregister_thread_mb #define rcu_init rcu_init_mb #define rcu_exit rcu_exit_mb #define synchronize_rcu synchronize_rcu_mb #define rcu_reader rcu_reader_mb -#define rcu_gp_ctr rcu_gp_ctr_mb +#define rcu_gp rcu_gp_mb #define get_cpu_call_rcu_data get_cpu_call_rcu_data_mb #define get_call_rcu_thread get_call_rcu_thread_mb @@ -156,15 +156,23 @@ #define create_all_cpu_call_rcu_data create_all_cpu_call_rcu_data_mb #define free_all_cpu_call_rcu_data free_all_cpu_call_rcu_data_mb #define call_rcu call_rcu_mb +#define call_rcu_data_free call_rcu_data_free_mb +#define call_rcu_before_fork call_rcu_before_fork_mb +#define call_rcu_after_fork_parent call_rcu_after_fork_parent_mb +#define call_rcu_after_fork_child call_rcu_after_fork_child_mb #define defer_rcu defer_rcu_mb #define rcu_defer_register_thread rcu_defer_register_thread_mb #define rcu_defer_unregister_thread rcu_defer_unregister_thread_mb #define rcu_defer_barrier rcu_defer_barrier_mb #define rcu_defer_barrier_thread rcu_defer_barrier_thread_mb +#define rcu_defer_exit rcu_defer_exit_mb #define rcu_flavor rcu_flavor_mb +#define rcu_yield_active rcu_yield_active_mb +#define rcu_rand_yield rcu_rand_yield_mb + #else #error "Undefined selection"