X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=urcu-qsbr.c;h=af82fb7e6d3d6bbe3d6ef199c5c9d23ce9253163;hb=f597a8b945f69aea4a3dc3b5ad2e8a2a5237ca8f;hp=619df60511b67ce9f5408d13e5ef33f7326ee7f5;hpb=b0a841b4ff807dd29fe0cdbfe24900312f0e627b;p=urcu.git diff --git a/urcu-qsbr.c b/urcu-qsbr.c index 619df60..af82fb7 100644 --- a/urcu-qsbr.c +++ b/urcu-qsbr.c @@ -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, ®istry); 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);