Fixes for liburcu-qsbr
Move registration and deregistration of the main thread from
isc_loopmgr_run()
into isc__initialize()
/ isc__shutdown()
:
liburcu-qsbr fails an assertion if we try to use it from an
unregistered thread, and we need to be able to use it when the
event loops are not running.
Use rcu_assign_pointer()
and rcu_dereference()
in qp-trie
transactions so that they properly mark threads as online.
Fix the definition of isc_qsbr_rcu_dereference()
to return
the referenced value, and to call the right function inside
liburcu.
Change the thread sanitizer suppressions to match any variant of
rcu_*_barrier()
Closes #4067 (closed)