The RCU lock-free hash table currently requires that the destroy function should not be called from within RCU read-side critical sections. This is caused by the lazy resize, which uses the call_rcu worker thread, even though all it really needs is a workqueue/worker thread scheme.
Implement an internal workqueue API in liburcu, and use it instead of call_rcu in rculfhash to overcome this limitation. Mathieu Desnoyers (2): Implement urcu workqueues internal API Use workqueue in rculfhash include/urcu/rculfhash.h | 15 +- src/Makefile.am | 2 +- src/rculfhash-internal.h | 2 +- src/rculfhash.c | 124 ++++++------ src/workqueue.c | 507 +++++++++++++++++++++++++++++++++++++++++++++++ src/workqueue.h | 104 ++++++++++ 6 files changed, 686 insertions(+), 68 deletions(-) create mode 100644 src/workqueue.c create mode 100644 src/workqueue.h -- 2.1.4 _______________________________________________ lttng-dev mailing list [email protected] https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
