qsbr: only mark reader thread as being waited for in contended case
[userspace-rcu.git] / urcu.c
diff --git a/urcu.c b/urcu.c
index a9ebf597858b063d20223b6ac48331a7a3a730db..f74304ca51fa3c2c0aed789585192b06646eb5c9 100644 (file)
--- a/urcu.c
+++ b/urcu.c
@@ -220,6 +220,10 @@ void wait_for_quiescent_state(void)
        for (index = registry; index < registry + num_readers; index++) {
                int wait_loops = 0;
 
+               if (likely(!rcu_old_gp_ongoing(
+                               &index->urcu_reader_status->active_readers)))
+                       continue;
+
                index->urcu_reader_status->gp_waiting = 1;
 #ifndef HAS_INCOHERENT_CACHES
                while (rcu_old_gp_ongoing(
This page took 0.043026 seconds and 4 git commands to generate.