rcu: add basic read-copy-update implementation

Operating Systems / OSv - Avi Kivity [cloudius-systems.com] - 11 August 2013 05:47 UTC

This adds fairly basic support for rcu.

Declaring:

mutex mtx; rcu_ptr my_ptr;

Read-side:

WITH_LOCK(rcu_read_lock) { const my_object* p = my_ptr.read(); // do things with *p // but don't block! }

Write-side:

WITH_LOCK(mtx) { my_object* old = my_ptr.read_by_owner(); my_object* p = new my_object; // ... my_ptr.assign(p); rcu_dispose(old); // or rcu_defer(some_func, old); }

94b6979 rcu: add basic read-copy-update implementation
build.mk | 1 +
core/rcu.cc | 121 ++++++++++++++++++++++++++++++++++++++++
include/osv/rcu.hh | 157 ++++++++++++++++++++++++++++++++++++++++++++++++++++
loader.cc | 4 ++
4 files changed, 283 insertions(+)

Upstream: github.com


  • Share