X-Git-Url: http://git.liburcu.org/?p=urcu.git;a=blobdiff_plain;f=urcu-qsbr.c;h=af82fb7e6d3d6bbe3d6ef199c5c9d23ce9253163;hp=619df60511b67ce9f5408d13e5ef33f7326ee7f5;hb=2af1c19e6a553878fcb2a5106f050d5ed7ac0f54;hpb=b0a841b4ff807dd29fe0cdbfe24900312f0e627b 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);