X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=urcu-qsbr.c;h=d7178f43215dd0e70b45ccac3f43317aaf44035e;hb=aa46e09faad0962ef1b782c0e564d8d674d51160;hp=d6adc5bfaafa9d4d851842bad7d398967b081eec;hpb=4de0cd31491bcb93a19c14fc1eb2a2a23ce12855;p=userspace-rcu.git diff --git a/urcu-qsbr.c b/urcu-qsbr.c index d6adc5b..d7178f4 100644 --- a/urcu-qsbr.c +++ b/urcu-qsbr.c @@ -41,9 +41,9 @@ #include "urcu/static/urcu-qsbr.h" #include "urcu-pointer.h" #include "urcu/tls-compat.h" +#include "urcu/waitqueue-lifo.h" #include "urcu-die.h" -#include "urcu-wait.h" /* Do not #define _LGPL_SOURCE to ensure we can emit the wrapper symbols */ #undef _LGPL_SOURCE @@ -121,7 +121,7 @@ static void wait_for_readers(struct cds_list_head *input_readers, struct cds_list_head *cur_snap_readers, struct cds_list_head *qsreaders) { - int wait_loops = 0; + unsigned int wait_loops = 0; struct rcu_reader *index, *tmp; /* @@ -130,7 +130,8 @@ static void wait_for_readers(struct cds_list_head *input_readers, * current rcu_gp.ctr value. */ for (;;) { - wait_loops++; + if (wait_loops < RCU_QS_ACTIVE_ATTEMPTS) + wait_loops++; if (wait_loops >= RCU_QS_ACTIVE_ATTEMPTS) { uatomic_set(&rcu_gp.futex, -1); /*