Userspace RCU 0.6.0
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.
Changelog:
- Added call_rcu() support, graciously contributed by Paul E. McKenney.
- Added urcu/cds.h and merged all "Concurrent Data Containers" (CDS) into a single .so: liburcu-cds.so to have a single header/shared object holding all concurrency-aware data containers. It provides support for RCU lists, queues and stacks at the moment.
- liburcu 0.6.0 now allows linking a single application with multiple flavors of RCU. This required a library API change which is incompatible with older 0.5.x liburcu. The .so version number is therefore bumped from 0 to 1 (e.g. liburcu.so.1).
- Added "atfork" handling API, documented in README. Only useful for processes using fork() without following exec().
- Renaming the following files, keeping the old files (producing a compiler warning):
urcu/uatomic_arch.h -> urcu/uatomic.h
urcu/urcu-futex.h -> urcu/futex.h
urcu/urcu_ref.h -> urcu/ref.hProject website: http://lttng.org/urcu
Download link: http://www.lttng.org/files/urcu/
Signature · 4 lines
Mathieu Desnoyers Operating System Efficiency R&D Consultant EfficiOS Inc. http://www.efficios.com
Quoted 23 lines · Mathieu Desnoyers
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.
Changelog:
- Added
call_rcu()support, graciously contributed by Paul E. McKenney.
- Addedurcu/cds.hand merged all "Concurrent Data Containers" (CDS) into a single .so: liburcu-cds.so to have a single header/shared object holding all concurrency-aware data containers. It provides support for RCU lists, queues and stacks at the moment.
- liburcu 0.6.0 now allows linking a single application with multiple flavors of RCU. This required a library API change which is incompatible with older 0.5.x liburcu. The .so version number is therefore bumped from 0 to 1 (e.g. liburcu.so.1).
- Added "atfork" handling API, documented in README. Only useful for processes usingfork()without followingexec().
- Renaming the following files, keeping the old files (producing a compiler warning):
Quoted 6 lines
urcu/uatomic_arch.h -> urcu/uatomic.h urcu/urcu-futex.h -> urcu/futex.h urcu/urcu_ref.h -> urcu/ref.hProject website: http://lttng.org/urcu
Download link: http://www.lttng.org/files/urcu/
Hi Mathieu,
The release can't build in my side:
$ tar -jxf userspace-rcu-0.6.0.tar.bz2 && cd userspace-rcu-0.6.0 && ./configure && make
make all-recursive
make[1]: Entering directory `/home/dcui/userspace-rcu-0.6.0' Making all in .
make[2]: Entering directory `/home/dcui/userspace-rcu-0.6.0'
CC wfqueue.lo CC wfstack.lo CC rculfqueue.lo CC rculfstack.lo CCLD liburcu-cds.la CC urcu.lo
urcu.c:438:32: error: urcu-call-rcu-impl.h: No such file or directory urcu.c:439:29: error: urcu-defer-impl.h: No such file or directory make[2]: *** [urcu.lo] Error 1
make[2]: Leaving directory `/home/dcui/userspace-rcu-0.6.0' make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/dcui/userspace-rcu-0.6.0'
make: *** [all] Error 2
Can you please have a look?
Thanks,
-- Dexuan
Quoted 54 lines · Dexuan
Quoted 23 lines · Mathieu Desnoyers
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.
Changelog:
- Added
call_rcu()support, graciously contributed by Paul E. McKenney.
- Addedurcu/cds.hand merged all "Concurrent Data Containers" (CDS) into a single .so: liburcu-cds.so to have a single header/shared object holding all concurrency-aware data containers. It provides support for RCU lists, queues and stacks at the moment.
- liburcu 0.6.0 now allows linking a single application with multiple flavors of RCU. This required a library API change which is incompatible with older 0.5.x liburcu. The .so version number is therefore bumped from 0 to 1 (e.g. liburcu.so.1).
- Added "atfork" handling API, documented in README. Only useful for processes usingfork()without followingexec().
- Renaming the following files, keeping the old files (producing a compiler warning):Quoted 6 lines
urcu/uatomic_arch.h -> urcu/uatomic.h urcu/urcu-futex.h -> urcu/futex.h urcu/urcu_ref.h -> urcu/ref.hProject website: http://lttng.org/urcu
Download link: http://www.lttng.org/files/urcu/Hi Mathieu,
The release can't build in my side:$ tar -jxf userspace-rcu-0.6.0.tar.bz2 && cd userspace-rcu-0.6.0 && ./configure && makemake all-recursive
make[1]: Entering directory `/home/dcui/userspace-rcu-0.6.0' Making all in .
make[2]: Entering directory `/home/dcui/userspace-rcu-0.6.0'CC wfqueue.lo CC wfstack.lo CC rculfqueue.lo CC rculfstack.lo CCLD liburcu-cds.la CC urcu.lourcu.c:438:32: error:
urcu-call-rcu-impl.h: No such file or directory urcu.c:439:29: error:urcu-defer-impl.h: No such file or directory make[2]: *** [urcu.lo] Error 1
make[2]: Leaving directory `/home/dcui/userspace-rcu-0.6.0' make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/dcui/userspace-rcu-0.6.0'
make: *** [all] Error 2
Quoted 1 line
Can you please have a look?
I get the same thing from the tarball. But the git tree works just fine, so my guess is that the tarball creation left out a couple of files.
Thanx, Paul
Quoted 1 line · * Paul E. McKenney ([email protected]) wrote:
On Mon, Jun 13, 2011 at 10:06:09AM +0800, Cui, Dexuan wrote:
[...]
Quoted 23 lines
Quoted 23 lines
Hi Mathieu,
The release can't build in my side:$ tar -jxf userspace-rcu-0.6.0.tar.bz2 && cd userspace-rcu-0.6.0 && ./configure && makemake all-recursive
make[1]: Entering directory `/home/dcui/userspace-rcu-0.6.0' Making all in .
make[2]: Entering directory `/home/dcui/userspace-rcu-0.6.0'CC wfqueue.lo CC wfstack.lo CC rculfqueue.lo CC rculfstack.lo CCLD liburcu-cds.la CC urcu.lourcu.c:438:32: error:
urcu-call-rcu-impl.h: No such file or directory urcu.c:439:29: error:urcu-defer-impl.h: No such file or directory make[2]: *** [urcu.lo] Error 1
make[2]: Leaving directory `/home/dcui/userspace-rcu-0.6.0' make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/dcui/userspace-rcu-0.6.0'
make: *** [all] Error 2
Quoted 4 lines
Quoted 1 line
Can you please have a look?
I get the same thing from the tarball. But the git tree works just fine, so my guess is that the tarball creation left out a couple of files.
Indeed, I missed those two headers in the Makefile.am EXTRA_DIST. I just released 0.6.1, which fixes this issue. I've made sure the tarball builds fine.
Thanks for reporting this so quickly!
Mathieu
Signature · 4 lines
Mathieu Desnoyers Operating System Efficiency R&D Consultant EfficiOS Inc. http://www.efficios.com