#include <string.h>
#include <errno.h>
#include <poll.h>
+#include <unistd.h>
#define BUILD_QSBR_LIB
#include "urcu-qsbr-static.h"
for (index = registry; index < registry + num_readers; index++) {
int wait_loops = 0;
+ if (likely(!rcu_gp_ongoing(&index->urcu_reader_status->qs_gp)))
+ continue;
+
index->urcu_reader_status->gp_waiting = 1;
while (rcu_gp_ongoing(&index->urcu_reader_status->qs_gp)) {
if (wait_loops++ == RCU_QS_ACTIVE_ATTEMPTS) {
- sched_yield(); /* ideally sched_yield_to() */
+ /* adapted wait time, in us */
+ usleep(LOAD_SHARED(index->urcu_reader_status->qs_time_delta_usec) / 4);
wait_loops = 0;
} else {
#ifndef HAS_INCOHERENT_CACHES