* [RELEASE] Userspace RCU 0.10.0, 0.9.4, 0.8.10 (EOL)
@ 2017-06-13 0:16 Mathieu Desnoyers
0 siblings, 0 replies; only message in thread
From: Mathieu Desnoyers @ 2017-06-13 0:16 UTC (permalink / raw)
To: linux-kernel, lttng-dev, rp, lwn
Cc: Paul E. McKenney, Stephen Hemminger, Alan Stern, Lai Jiangshan
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.
Version 0.10.0 of liburcu introduces mainly the following changes
over version 0.9.x:
- Introduce a urcu_ref_get_safe API, which can return a failure in
case of reference count overflow,
- Remove RCU caller context restrictions on RCU lock-free hash table
cds_lfht_destroy API:
Up to and including liburcu 0.9.x, the RCU lock-free hash table
required that the destroy function should not be called from
within RCU read-side critical sections. This is caused by the lazy
resize, which uses the call_rcu worker thread, even though all it
really needs is a workqueue/worker thread scheme.
Use the new internal workqueue API instead of call_rcu in rculfhash to
remove this restriction starting from liburcu 0.10.x.
- Allow forcing the use of the sys_membarrier() system call:
When using the default (liburcu.so) and bulletproof (liburcu-bp.so)
flavours of Userspace RCU, kernel support for sys-membarrier is detected
dynamically and stored in the rcu_has_sys_membarrier_memb and
urcu_bp_has_sys_membarrier global variables.
Checking the value of these variables adds a small but measurable overhead
to smp_mb_slave. On systems which support sys-membarrier, it would be
nice to have a way of avoiding that overhead.
Here is the proposed approach: if CONFIG_RCU_FORCE_SYS_MEMBARRIER is
defined then rcu_has_sys_membarrier_memb/urcu_bp_has_sys_membarrier are
replaced with the constant 1, eliminating the overhead in smp_mb_slave.
As a sanity check, support for sys-membarrier is still detected at
startup. A program using liburcu or liburcu-bp compiled with this option
aborts in the library constructor if the membarrier system call is not
supported by the operating system.
- Introduce support for NIOS2 and m68k architectures,
- ARM32: use lighter-weight dmb ish (inner shareable domain) for smp barrier,
- Introduce a --enable-rcu-debug configure option, which builds internal
RCU consistency checks into the library,
Versions 0.9.4 and 0.8.10 introduce an important fix for ARM32: a missing
release barrier was added before uatomic_xchg(). They introduce other minor
fixes.
liburcu 0.8.10 will be the last release of the stable-0.8 series.
liburcu stable-0.8 branch has now reached end of life with the release of
liburcu 0.10.0. Users of liburcu 0.8.x should upgrade to 0.10.x or 0.9.x.
Enjoy!
Mathieu
Project website: http://liburcu.org
Git repository: git://git.liburcu.org/urcu.git
Changelog:
2017-06-12 Userspace RCU 0.10.0
* Bump library soname due to urcu flavor structure change
* Cleanup: use mutex_lock() wrapper in rculfhash
* Use workqueue in rculfhash
* Implement urcu workqueues internal API
* Add support for m68k architecture
* Set -Wall globally in AM_CFLAGS
* Fix: remove double use of PTHREAD_CFLAGS
* Re-add PTHREAD_CFLAGS to global CFLAGS
* Fix: Don't override user variables within the build system
* Add report at the end of configure
* uatomic-api docs: use the third-person singular
* Add --enable-rcu-debug to configure
* ARM32: use dmb ish (inner shareable domain) for smp barriers
* Cleanup: remove cmm_wmb() from rcu_xchg_pointer and rcu_cmpxchg_pointer
* Fix: uatomic arm32: add missing release barrier before uatomic_xchg
* Tests: Add verbose support to test script
* Fix: add missing CONFIG_RCU_FORCE_SYS_MEMBARRIER to urcu/config.h.in
* Allow forcing the use of sys membarrier
* Fix: rcutorture: work-around signal issue on mac os x
* Fix: rcutorture should register thread using call_rcu
* Fix: add missing backslash in Makefile.am
* Fix: Do not use wildcards in include/Makefile.am
* Bump version to 0.10-pre
* Fix: check for rand_r() in compat-rand.h
* Fix: Move rand-compat to private src dir
* Fix: remove AC_FUNC_MALLOC from configure.ac
* Cleanup: Re-organise source dir
* Cleanup: remove leftover manual pthread detection
* Fix: update ax_pthread macro to handle newer clang
* Update library current version due to adding destroy API
* Fix: Use pthread_self to get threadid on OSX
* Fix: examples: use destroy API for queues/stacks
* Update library age due to new stack/queue destroy API
* Fix: tests: invoke destroy APIs for queues/stacks
* Fix: add missing destroy functions to queues/stack APIs
* Fix: add missing __cds_wfcq_init for LGPL API
* Fix: memory leak on hash table destroy
* Fix: Add failover for platforms without nproc
* Fix: use clock_get_time for caa_get_cycles fallback on MacOSX
* Fix: syscall-compat.h MacOSX support
* Fix: Add solaris-build.md to dist
* rculfhash: Documentation: clarify need for grace period before "re-using"
* Port: build shared libraries in Cygwin
* Port: fix compatibility header for Cygwin
* Add GNU Hurd support to syscall-compat.h
* Add support for aarch64_be
* Fix: urcu-bp: re-initialize list head on library exit
* bootstrap: Standardize on autoreconf -vi
* Harmonize bootstrap script across projects
* Fix: examples make distcheck failure
* wfcqueue: add C++ compatibility API
* Fix: CDS_WFCQ_WOULDBLOCK typing for c++
* Fix: configure.ac: check for possibly required libs for clock_gettime
* Support for NIOS2 architecture
* urcu_ref_get_safe: introduce new API
* Fix: handle reference count overflow
* Fix: compat_futex should work-around futex signal-restart kernel bug
* Support for Xeon-Phi with newer MPSS
* sparc64: allocate membarrier system call number
* hppa: allocate membarrier system call number
* Fix build on non-Linux Debian ports
* Fix: urcu-signal: smp_mb_master() needs registry lock
* Fix: rculfhash only needs to include urcu-pointers.h
* Fix: out-of-tree benchmark/regtest
* Fix: add missing regtest and benchmark files to dist tarball
* Fix: add missing run.sh to benchmark makefile
2017-06-12 Userspace RCU 0.9.4
* Fix: Don't override user variables within the build system
* Fix: uatomic arm32: add missing release barrier before uatomic_xchg
* Tests: Add verbose support to test script
2017-12-06 Userspace RCU 0.8.10 (End of Life)
* Fix: Don't override user variables within the build system
* Fix: uatomic arm32: add missing release barrier before uatomic_xchg
* Fix: rcutorture: work-around signal issue on mac os x
* Fix: rcutorture should register thread using call_rcu
* Fix: remove AC_FUNC_MALLOC from configure.ac
* Update library current version due to adding destroy API
* Fix: Use pthread_self to get threadid on OSX
* Fix: examples: use destroy API for queues/stacks
* Update library age due to new stack/queue destroy API
* Fix: tests: invoke destroy APIs for queues/stacks
* Fix: add missing destroy functions to queues/stack APIs
* Fix: memory leak on hash table destroy
* Fix: urcu-bp: re-initialize list head on library exit
* Fix: examples make distcheck failure
* Cleanup: remove unused return value warning from tests
--
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2017-06-13 0:16 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-06-13 0:16 [RELEASE] Userspace RCU 0.10.0, 0.9.4, 0.8.10 (EOL) Mathieu Desnoyers
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.