Introduce urcu_assert and registration check
[urcu.git] / urcu-qsbr.c
index 619df60511b67ce9f5408d13e5ef33f7326ee7f5..af82fb7e6d3d6bbe3d6ef199c5c9d23ce9253163 100644 (file)
@@ -468,6 +468,8 @@ void rcu_register_thread(void)
        assert(URCU_TLS(rcu_reader).ctr == 0);
 
        mutex_lock(&rcu_registry_lock);
+       assert(!URCU_TLS(rcu_reader).registered);
+       URCU_TLS(rcu_reader).registered = 1;
        cds_list_add(&URCU_TLS(rcu_reader).node, &registry);
        mutex_unlock(&rcu_registry_lock);
        _rcu_thread_online();
@@ -480,6 +482,8 @@ void rcu_unregister_thread(void)
         * with a waiting writer.
         */
        _rcu_thread_offline();
+       assert(URCU_TLS(rcu_reader).registered);
+       URCU_TLS(rcu_reader).registered = 0;
        mutex_lock(&rcu_registry_lock);
        cds_list_del(&URCU_TLS(rcu_reader).node);
        mutex_unlock(&rcu_registry_lock);
This page took 0.022389 seconds and 4 git commands to generate.