Mirror of the lttng-dev mailing list
 help / color / mirror / Atom feed
* [lttng-dev] [RFC PATCH liburcu 0/2] Remove RCU requirements on hash table destroy
@ 2017-05-30 21:10 Mathieu Desnoyers
  2017-05-30 21:10 ` [lttng-dev] [RFC PATCH liburcu 1/2] Implement urcu workqueues internal API Mathieu Desnoyers
  2017-05-30 21:10 ` [lttng-dev] [RCU PATCH liburcu 2/2] Use workqueue in rculfhash Mathieu Desnoyers
  0 siblings, 2 replies; 3+ messages in thread
From: Mathieu Desnoyers @ 2017-05-30 21:10 UTC (permalink / raw)


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



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2017-05-30 21:10 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-05-30 21:10 [lttng-dev] [RFC PATCH liburcu 0/2] Remove RCU requirements on hash table destroy Mathieu Desnoyers
2017-05-30 21:10 ` [lttng-dev] [RFC PATCH liburcu 1/2] Implement urcu workqueues internal API Mathieu Desnoyers
2017-05-30 21:10 ` [lttng-dev] [RCU PATCH liburcu 2/2] Use workqueue in rculfhash Mathieu Desnoyers

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox