#include <urcu/compiler.h>
#include <urcu/arch.h>
#include <urcu/uatomic.h>
+#include <urcu/urcu-checker.h>
#ifdef __cplusplus
extern "C" {
#endif
-#ifdef _LGPL_SOURCE
+#if defined(_LGPL_SOURCE) || defined(URCU_INLINE_SMALL_FUNCTIONS)
#include <urcu/static/urcu-pointer.h>
* Fetch a RCU-protected pointer. Typically used to copy the variable ptr to a
* local variable.
*/
-#define rcu_dereference _rcu_dereference
+#define rcu_dereference(p) \
+ ({ \
+ rcu_read_ongoing_check_debug(__func__); \
+ _rcu_dereference(p); \
+ })
/*
* type *rcu_cmpxchg_pointer(type **ptr, type *new, type *old)
#define rcu_xchg_pointer _rcu_xchg_pointer
#define rcu_set_pointer _rcu_set_pointer
-#else /* !_LGPL_SOURCE */
+#else /* !(defined(_LGPL_SOURCE) || defined(URCU_INLINE_SMALL_FUNCTIONS)) */
extern void *rcu_dereference_sym(void *p);
#define rcu_dereference(p) \
_________pv); \
} while (0)
-#endif /* !_LGPL_SOURCE */
+#endif /* !(defined(_LGPL_SOURCE) || defined(URCU_INLINE_SMALL_FUNCTIONS)) */
/*
* void rcu_assign_pointer(type *ptr, type *new)