X-Git-Url: https://git.liburcu.org/?p=urcu.git;a=blobdiff_plain;f=urcu-qsbr.h;h=bf173618bf9a0dee1da8441ff2c14ada233fa064;hp=116fd77146e5b8b04aa780f195ca5c11a34590f5;hb=b83b3590caf8ddd0fb1393b0d8378f916c8bf831;hpb=02be55611d3b1c7bf4fdfcb3a9c98f621882d417 diff --git a/urcu-qsbr.h b/urcu-qsbr.h index 116fd77..bf17361 100644 --- a/urcu-qsbr.h +++ b/urcu-qsbr.h @@ -32,13 +32,20 @@ #include /* - * See urcu-pointer.h and urcu-pointer-static.h for pointer publication headers. + * See urcu-pointer.h and urcu/static/urcu-pointer.h for pointer + * publication headers. */ #include #ifdef __cplusplus extern "C" { -#endif +#endif + +#include + +#ifdef RCU_DEBUG /* For backward compatibility */ +#define DEBUG_RCU +#endif /* * Important ! @@ -50,7 +57,7 @@ extern "C" { #ifdef _LGPL_SOURCE -#include +#include /* * Mappings for static use of the userspace RCU library. @@ -62,15 +69,16 @@ extern "C" { * rcu_read_unlock() * * Mark the beginning and end of a read-side critical section. - * DON'T FORGET TO USE rcu_register_thread/rcu_unregister_thread() FOR EACH - * THREAD WITH READ-SIDE CRITICAL SECTION. + * DON'T FORGET TO USE rcu_register_thread/rcu_unregister_thread() + * FOR EACH THREAD WITH READ-SIDE CRITICAL SECTION. */ -#define rcu_read_lock() _rcu_read_lock() -#define rcu_read_unlock() _rcu_read_unlock() +#define rcu_read_lock_qsbr _rcu_read_lock +#define rcu_read_unlock_qsbr _rcu_read_unlock +#define rcu_read_ongoing_qsbr _rcu_read_ongoing -#define rcu_quiescent_state() _rcu_quiescent_state() -#define rcu_thread_offline() _rcu_thread_offline() -#define rcu_thread_online() _rcu_thread_online() +#define rcu_quiescent_state_qsbr _rcu_quiescent_state +#define rcu_thread_offline_qsbr _rcu_thread_offline +#define rcu_thread_online_qsbr _rcu_thread_online #else /* !_LGPL_SOURCE */ @@ -82,28 +90,29 @@ extern "C" { * QSBR read lock/unlock are guaranteed to be no-ops. Therefore, we expose them * in the LGPL header for any code to use. However, the debug version is not * nops and may contain sanity checks. To activate it, applications must be - * recompiled with -DRCU_DEBUG (even non-LGPL/GPL applications). This is the + * recompiled with -DDEBUG_RCU (even non-LGPL/GPL applications). This is the * best trade-off between license/performance/code triviality and * library debugging & tracing features we could come up with. */ -#if (!defined(BUILD_QSBR_LIB) && defined(RCU_DEBUG)) +#if (!defined(BUILD_QSBR_LIB) && !defined(DEBUG_RCU)) static inline void rcu_read_lock(void) { } -static inline void rcu_read_lock(void) +static inline void rcu_read_unlock(void) { } -#else /* !RCU_DEBUG */ +#else /* !DEBUG_RCU */ extern void rcu_read_lock(void); extern void rcu_read_unlock(void); -#endif /* !RCU_DEBUG */ +#endif /* !DEBUG_RCU */ +extern int rcu_read_ongoing(void); extern void rcu_quiescent_state(void); extern void rcu_thread_offline(void); extern void rcu_thread_online(void); @@ -118,8 +127,12 @@ extern void synchronize_rcu(void); extern void rcu_register_thread(void); extern void rcu_unregister_thread(void); -#ifdef __cplusplus +#ifdef __cplusplus } #endif +#include +#include +#include + #endif /* _URCU_QSBR_H */