Skip to contentSkip to conversation

Userspace RCU 0.6.0

RELEASE Mathieu Desnoyers 3 participants 4 messages Jun 11, 2011 – Jun 13, 2011

lore
Share & tools
lore
#0 lore raw

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.h

Project 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
#1 lore raw
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.
- 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):

Quoted 6 lines
    urcu/uatomic_arch.h -> urcu/uatomic.h
    urcu/urcu-futex.h -> urcu/futex.h
    urcu/urcu_ref.h -> urcu/ref.h

Project 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

#2 lore raw
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.
- 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):

Quoted 6 lines
    urcu/uatomic_arch.h -> urcu/uatomic.h
    urcu/urcu-futex.h -> urcu/futex.h
    urcu/urcu_ref.h -> urcu/ref.h

Project 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

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

#3 lore raw
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 && 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

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