#include "urcu/map/urcu-bp.h"
#include "urcu/static/urcu-bp.h"
#include "urcu-pointer.h"
+#include "urcu/tls-compat.h"
/* Do not #define _LGPL_SOURCE to ensure we can emit the wrapper symbols */
#undef _LGPL_SOURCE
#ifdef DEBUG_YIELD
unsigned int yield_active;
-unsigned int __thread rand_yield;
+DEFINE_URCU_TLS(unsigned int, rand_yield);
#endif
/*
* Pointer to registry elements. Written to only by each individual reader. Read
* by both the reader and the writers.
*/
-struct rcu_reader __thread *rcu_reader;
+DEFINE_URCU_TLS(struct rcu_reader *, rcu_reader);
static CDS_LIST_HEAD(registry);
rcu_reader_reg->tid = pthread_self();
assert(rcu_reader_reg->ctr == 0);
cds_list_add(&rcu_reader_reg->node, ®istry);
- rcu_reader = rcu_reader_reg;
+ URCU_TLS(rcu_reader) = rcu_reader_reg;
}
/* Called with signals off and mutex locked */
/*
* Check if a signal concurrently registered our thread since
* the check in rcu_read_lock(). */
- if (rcu_reader)
+ if (URCU_TLS(rcu_reader))
goto end;
mutex_lock(&rcu_gp_lock);
return uatomic_cmpxchg(p, old, _new);
}
-DEFINE_RCU_FLAVOR()
+DEFINE_RCU_FLAVOR(rcu_flavor);
#include "urcu-call-rcu-impl.h"
#include "urcu-defer-impl.h"