Skip to content

Improve the Userspace RCU integration

Ondřej Surý requested to merge ondrej-urcu-fixes into main

This commit allows BIND 9 to be compiled with different flavours of Userspace RCU, and improves the integration between Userspace RCU and our event loop:

  • In the RCU QSBR, the thread is put offline when polling and online when rcu_dereference, rcu_assign_pointer (or friends) are called.

  • In other RCU modes, we check that we are not reading when reaching the quiescent callback in the event loop.

  • We register the thread before uv_work_run() callback is called and after it has finished. The rcu_(un)register_thread() has a large overhead, but that's fine in this case.

This is a prerequisite for !7668 (merged) - see #3934 (closed)

Edited by Tony Finch

Merge request reports