Userspace RCU

liburcu is a LGPLv2.1 userspace RCU (read-copy-update) library. This data synchronization library provides read-side access which scales linearly with the number of cores. It does so by allowing multiples copies of a given data structure to live at the same time, and by monitoring the data structure accesses to detect grace periods after which memory reclamation is possible.

The liburcu project has been started by Mathieu Desnoyers.

Documents

This article from Paul E. McKenney and Jonathan Walpole covers the basic concepts beneath RCU :

Binary packages

liburcu is available as a Debian package named liburcu0. The development files are available in package liburcu-dev.

Source

Packages are available at :

Repository

The source code can be browsed at :

The library is available for download in this git repository :

  • git clone git://lttng.org/userspace-rcu.git

Mailing list

For help and developer discussions, see the LTTng mailing list.

To the question "why is this hosted on the LTTng website ?", the answer is : the userspace RCU library was needed for the LTTng userspace tracer port. The userspace tracer implementation is therefore the motivation and first user of liburcu.