Introduce urcu_assert and registration check
[urcu.git] / urcu.c
diff --git a/urcu.c b/urcu.c
index 5ffeb79553b6374f0fb1a607b3862ed78dda63e2..4702ba9aea4c1bc55f180b658c28bc56c03dec96 100644 (file)
--- a/urcu.c
+++ b/urcu.c
@@ -500,6 +500,8 @@ void rcu_register_thread(void)
        assert(!(URCU_TLS(rcu_reader).ctr & RCU_GP_CTR_NEST_MASK));
 
        mutex_lock(&rcu_registry_lock);
+       assert(!URCU_TLS(rcu_reader).registered);
+       URCU_TLS(rcu_reader).registered = 1;
        rcu_init();     /* In case gcc does not support constructor attribute */
        cds_list_add(&URCU_TLS(rcu_reader).node, &registry);
        mutex_unlock(&rcu_registry_lock);
@@ -508,6 +510,8 @@ void rcu_register_thread(void)
 void rcu_unregister_thread(void)
 {
        mutex_lock(&rcu_registry_lock);
+       assert(URCU_TLS(rcu_reader).registered);
+       URCU_TLS(rcu_reader).registered = 0;
        cds_list_del(&URCU_TLS(rcu_reader).node);
        mutex_unlock(&rcu_registry_lock);
 }
This page took 0.022519 seconds and 4 git commands to generate.