Mostly a few qp-trie details to adjust.
AM_CPPFLAGS += \
$(LIBISC_CFLAGS) \
$(LIBDNS_CFLAGS) \
+ $(LIBURCU_CFLAGS) \
$(LIBUV_CFLAGS) \
-DFUZZDIR=\"$(abs_srcdir)\" \
-I$(top_srcdir)/lib/dns \
#include <stdbool.h>
#include <stdint.h>
-#include <isc/qsbr.h>
#include <isc/random.h>
#include <isc/refcount.h>
#include <isc/rwlock.h>
+#include <isc/urcu.h>
#include <isc/util.h>
#include <dns/qp.h>
#include <isc/hashmap.h>
#include <isc/ht.h>
#include <isc/list.h>
-#include <isc/qsbr.h>
#include <isc/rwlock.h>
+#include <isc/urcu.h>
#include <isc/util.h>
#include <dns/fixedname.h>
#include <unistd.h>
#include <isc/async.h>
+#include <isc/barrier.h>
#include <isc/list.h>
#include <isc/log.h>
#include <isc/loop.h>
#include <isc/mem.h>
#include <isc/mutex.h>
#include <isc/os.h>
-#include <isc/qsbr.h>
#include <isc/random.h>
#include <isc/refcount.h>
#include <isc/rwlock.h>
#include <isc/tid.h>
#include <isc/time.h>
#include <isc/timer.h>
+#include <isc/urcu.h>
#include <isc/util.h>
#include <isc/uv.h>
main(void) {
isc_loopmgr_t *loopmgr = NULL;
isc_mem_t *mctx = NULL;
+
+ setlinebuf(stdout);
+
uint32_t nloops;
const char *env_workers = getenv("ISC_TASK_WORKERS");
#define UNIT_TESTING
#include <cmocka.h>
-#include <isc/qsbr.h>
#include <isc/random.h>
#include <isc/refcount.h>
#include <isc/result.h>
#include <isc/string.h>
+#include <isc/urcu.h>
#include <isc/util.h>
#include <dns/name.h>
#include <isc/loop.h>
#include <isc/magic.h>
#include <isc/mem.h>
-#include <isc/qsbr.h>
#include <isc/random.h>
#include <isc/refcount.h>
#include <isc/rwlock.h>
+#include <isc/urcu.h>
#include <isc/util.h>
#include <dns/log.h>
for (size_t n = 0; n < TRANSACTION_COUNT; n++) {
TRACE("transaction %zu", n);
one_transaction(qpm);
- isc__qsbr_quiescent_state(isc_loop_current(loopmgr));
- isc_loopmgr_wakeup(loopmgr);
+ rcu_quiescent_state();
}
dns_qpmulti_destroy(&qpm);
setup_items();
isc_loop_setup(isc_loop_main(loopmgr), many_transactions, NULL);
isc_loopmgr_run(loopmgr);
+ rcu_barrier();
isc_loopmgr_destroy(&loopmgr);
isc_log_destroy(&dns_lctx);
}
$(LIBISC_CFLAGS) \
$(LIBDNS_CFLAGS) \
$(LIBNS_CFLAGS) \
+ $(LIBURCU_CFLAGS) \
$(LIBUV_CFLAGS) \
-I$(top_srcdir)/lib/isc \
-I$(top_srcdir)/lib/dns
#include <isc/buffer.h>
#include <isc/loop.h>
#include <isc/magic.h>
-#include <isc/qsbr.h>
#include <isc/refcount.h>
#include <isc/rwlock.h>
+#include <isc/urcu.h>
#include <isc/util.h>
#include <dns/name.h>
dumpqp(qp, "qp");
for (qp_chunk_t c = 0; c < qp->chunk_max; c++) {
printf("qp %p chunk %u base %p "
- "used %u free %u immutable %u phase %u\n",
+ "used %u free %u immutable %u discounted %u\n",
qp, c, qp->base->ptr[c], qp->usage[c].used,
qp->usage[c].free, qp->usage[c].immutable,
- qp->usage[c].phase);
+ qp->usage[c].discounted);
used += qp->usage[c].used;
free += qp->usage[c].free;
}