Hi, 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 multiple 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.
liburcu-cds provides efficient data structures based on RCU and lock-free algorithms. Those structures include hash tables, queues, stacks, and doubly-linked lists. New and Noteworthy Two years after the 0.8.0 release, it's about time we release Userspace RCU 0.9.0 with some interesting new features: * liburcu.so and liburcu-bp.so now use the membarrier system call to speed up RCU read-side critical sections when available. It is newly introduced in Linux 4.3. See kernel/membarrier.c in a recent Linux kernel tree for details. * Port Userspace RCU to Android, * Port Userspace RCU to Solaris 10 and 11, * Refactoring of tests into the following make targets: # Short sanity check make check # Few minutes regression testing make regtest # Few tens of minutes benchmarks make short_bench # Hours-long benchmarks make long_bench * Tests now output in "tap", for easier integration in continuous integration. See https://ci.lttng.org/job/liburcu/ for the Userspace RCU CI job. - Port to aarch64 and powerpc64le architectures, - Port to hppa/PA-RISC architecture, Note: the soname major has been bumped to 4 even though it really only needed to be bumped to 3. Changelog: 2015-10-16 Userspace RCU 0.9.0 * Bump soname major to 4 * Cleanup: remove trailing tab * Fix: Use proper macro to detect stdbool.h * Configure: Add missing checks * Port: Add Solaris build instructions * Fix: regtest outputs valid TAP protocol * Port: Detect nproc bin name in benchmark scripts * Port: Add Solaris getcpu support * Port: Fixes to build system for portability * Port: Add Solaris support to tests/common/thread-id.h * Port: Add Solaris support to urcu/syscall-compat.h * Port: replace bzero() by memset() * Port: make bootstrap script work on most shell * tests: rcutorture: use parameters rather than random * Fix: only define membarrier system call on Linux * Refactor tests * Fix: cast caa_cycles_t to unsigned long long * caa_get_cycles: caa_ prefix for type, use CLOCK_MONOTONIC * Cleanup: remove trailing whitespaces at EOL * Cleanup: move generic caa_get_cycles to arch/generic.h * tile: allocate membarrier system call number * ia64: allocate membarrier system call number * aarch64: allocate membarrier system call number * powerpc64le: use "ppc" architecture * arm: allocate membarrier system call number * s390: allocate membarrier system call number * ppc: allocate membarrier system call number * lfstack: relax constraints on node re-use * Fix: format string signedness * Cleanup: tests: Branch condition evaluates to a garbage value * Fix: test: unchecked return value * Fix: test: side-effect in assertion * x86: allocate membarrier system call number * urcu-bp: use sys_membarrier when available * Cleanup: urcu: remove unused membarrier "group" parameter * urcu/ref.h: implement urcu_ref_get_unless_zero() * Fix: compat_futex: uninitialized ret variable * Fix: compat_futex_noasync: don't override return value * Fix: dynamic fallback to compat futex on sys_futex ENOSYS * Detect RCU read-side overflows * Detect RCU read-side underflows * Introduce urcu_assert and registration check * Fix: volatile in assert() * Update following changes to sys_membarrier ABI * uatomic: Specify complete types for atomic function calls * Cleanup: remove unused return value warning from tests * Fix: handle sys_futex() FUTEX_WAIT interrupted by signal * Fix: compat_futex.c: *uaddr should be read as volatile * Cleanup: cast poll delay return value to void * tests: Convert unit tests to TAP * Fix: make benchmark test run in oot build * Fix: call_rcu_thread() affinity failure * Cleanup: cast poll delay return value to void * Cleanup: cast poll delay return value to void * Cleanup: cast poll delay return value to void * Cleanup: cast poll delay return value to void * Cleanup: cast poll() return value to void for delays * urcu: fix deprecation warning with new glibc * urcu: add cds_list_for_each_entry_safe_from macro * Fix: deadlock when thread join is issued in read-side C.S. * Fix: rename RCU_DEBUG to DEBUG_RCU in urcu-qsbr.h * Cleanup some c99 pedantic warnings * Mark braced-groups within expressions with __extension__ * Fix: compat_futex_noasync race condition * tests: Use stderr redirection for time output * Fix: use space after rpath for OS X ld * Fix: move transparent union attribute after union declaration for clang * Configure: add check for used type * Configure: add missing check of headers * Configure: add missing check for funcs: memset, strerror * Fix: documentation: urcu-pointer.h: s/rcu_dereference_pointer/rcu_dereference/ * urcu-bp/urcu-qsbr: remove unneeded DEBUG_YIELD code * Fix: call rcu should call internal RCU API * Fix: silence gcc -Wextra warning * compiler: use __GNUC__ instead of the undefined __GNUC_MAJOR__ * Fix: lfstack reversed empty/non-empty return value * lfstack: fix: add missing __cds_lfs_init * wfstack: add missing union parameters * Fix: preserve example files' timestamps when copying * wfstack: implement mutex-free wfstack with transparent union * wfcqueue: Implement mutex-free wfcqueue head with transparent union * lfstack: Implement mutex-free stack head with transparent union (v2) * rculfhash: remove duplicated code * rculfhash: handle pthread_create failures * rculfhash: fall back to single-threaded resize on calloc failure * x86: drop extra semi-colon in caa_cpu_relax * Cleanup: tests: cast console write return value as void * Modernize doc using Markdown * Fix: update automake following README to README.md change * Modernize README using Markdown * Fix: incorrect parenthesis in cds_hlist_for_each_entry_safe_2 * Fix: Use after free in rcu_barrier() * Fix: rcu_barrier(): uninitialized futex field * call_rcu threads should clear their PAUSED flag when they unpause * test_urcu_fork: test many fork, with 3 children deep * Update list of supported architectures in README * Add support for hppa/PA-RISC architecture * Use autoconf AM_MAINTAINER_MODE * Use gcc atomics on aarch64/powerpc64le * Fix: move wait loop increment before first conditional block * Fix: high cpu usage in synchronize_rcu with long RCU read-side C.S. * Fix: out of tree build: doc/examples * Fix: out of tree build tests/common * tests/unit: use lib rather than source * automake: Rename INCLUDES to AM_CPPFLAGS (new name) * tests regressions: use lib rather than recompile from source * tests: use common lib rather than recompile compat sources * urcu tests: use lib rather than compile from source * urcu mb tests: use lib rather than recompile from source * urcu signal tests: use library rather than recompile source * tests: move yield debug to common test library * tests urcu bp: use lib rather than recompile source * test_urcu_defer: link on urcu lib rather than recompile source * tests/benchmark: use urcu qsbr lib rather than recompile from source * Pass the CC variable to the example Makefiles * Fix: urcu-bp interaction with threads vs constructors/destructors * x86 barrier for Xeon Phi: use rsp on x86-64 * Set RCU_HAVE_FENCE to false on Intel Xeon Phi * Fix undefined NULL pointer arithmetic in hlist * Cleanup: Check for pthread in Libc * Cleanup: Android: Do not redefine gettid * Fix undefined NULL pointer arithmetic * Android: implement rand_r() * Android: do not redefine gettid on Android * Android: add a compat layer for 'syscall.h' * Android: do not link pthread on Android * Android: configure.ac Android check * Blacklist ARM gcc 4.8.0, 4.8.1, 4.8.2 * rculfhash: document max_nr_buckets = 0 * Library major version number (soname) increment to 3 * Fix: tls-compat multi-lib conflict * Use cross compiler for doc examples * Add lttng-dev mailing list to readme * wfcqueue: remove misleading comment * gcc warning fixes: -Wsign-compare and -Wextra * Fix: urcu-qsbr: reversed logic on RCU_DEBUG * Fix: urcu-bp segfault in glibc pthread_kill() * Fix urcu-bp: don't move registry * Fix: compat futex duplicated lock and completion * Fix: i386 compat code duplicated mutex instances * Fix: urcu-bp: Bulletproof RCU arena resize bug * Fix: test_mutex.c uninitialized mutex Project website: http://liburcu.org Git repository: git://git.liburcu.org/urcu.git -- Mathieu Desnoyers EfficiOS Inc. http://www.efficios.com _______________________________________________ lttng-dev mailing list lttng-dev@lists.lttng.org http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev