X-Git-Url: https://git.liburcu.org/?p=urcu.git;a=blobdiff_plain;f=urcu-qsbr.h;fp=urcu-qsbr.h;h=9a2c82f4b1e503155de664a545c8c5e5697c5608;hp=1dc4ddd6d27a0a59a810c5c7652e984374a0ac91;hb=727f819de5737f4be5b9f7e50aacf84c7a3f7999;hpb=256dd999d11736ebe5ad2865219879199c89cc90 diff --git a/urcu-qsbr.h b/urcu-qsbr.h index 1dc4ddd..9a2c82f 100644 --- a/urcu-qsbr.h +++ b/urcu-qsbr.h @@ -66,9 +66,32 @@ * library wrappers to be used by non-LGPL compatible source code. */ +/* + * 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 -DURCU_DEBUG (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(URCU_DEBUG)) + +static inline void rcu_read_lock(void) +{ +} + +static inline void rcu_read_lock(void) +{ +} + +#else /* !URCU_DEBUG */ + extern void rcu_read_lock(void); extern void rcu_read_unlock(void); +#endif /* !URCU_DEBUG */ + extern void *rcu_dereference(void *p); extern void rcu_quiescent_state(void);