2015-04-28 Userspace RCU 0.7.14
* Fix: call rcu should call internal RCU API * Fix: deadlock when thread join is issued in read-side C.S. * Fix: rename RCU_DEBUG to DEBUG_RCU in urcu-qsbr.h * Mark braced-groups within expressions with __extension__ * Fix: compat_futex_noasync race condition * Fix: documentation: urcu-pointer.h: s/rcu_dereference_pointer/rcu_dereference/ * Fix: silence gcc -Wextra warning 2014-10-21 Userspace RCU 0.7.13 * 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 * call_rcu threads should clear their PAUSED flag when they unpause * Fix: bring back dummy rcu_bp_exit symbol 2014-03-08 Userspace RCU 0.7.12 * Fix: move wait loop increment before first conditional block 2014-03-01 Userspace RCU 0.7.11 * Fix: high cpu usage in synchronize_rcu with long RCU read-side C.S. 2014-02-28 Userspace RCU 0.7.10 * Fix: urcu-bp interaction with threads vs constructors/destructors * Fix undefined NULL pointer arithmetic * Blacklist ARM gcc 4.8.0, 4.8.1, 4.8.2 * rculfhash: document max_nr_buckets = 0 2013-11-12 Userspace RCU 0.7.9 * tls-compat: fix comment typo * Keep ABI compatible with already compiled LGPL applications * Fix: tls-compat multi-lib conflict * 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 2013-09-06 Userspace RCU 0.7.8 * Fix: hash table growth (for small tables) should be limited * Document build work-around on MacOS X * Fix tests: use of uninitialized variables * tests: add missing unsigned long casts to pthread_self() 2013-06-18 Userspace RCU 0.7.7 * rculfhash: document destroy context limitation * Fix: Use a filled signal mask to disable all signals * Document: rculfhash destroy and resize side-effect in 0.7 * Add "sparc" host cpu to configure.ac * Fix: tests/api.h use cpuset.h * Fix hurd-i386: move cpuset tests outside of sched_setaffinity conditional * Fix tests: finer-grained use of CPU_SET, CPU_ZERO and cpu_set_t * Test for CPU_SET * Fix build on architectures with HAVE_SCHED_GETCPU but without HAVE_SYSCONF * README: document that Clang 3.0 (based on LLVM 3.0) is supported * clang: silence "unused expression result" warning * rculfhash: add assertions on node alignment * uatomic: style fix 2013-01-09 Userspace RCU 0.7.6 * Discourage use of pthread_atfork() for call_rcu handlers * Fix call_rcu fork handling * test: fork handling * Fix TLS detection: test with linker, add --disable-compiler-tls * Cleanup: cast pthread_self() return value to unsigned long * Fallback mechanism not working on platform where TLS is unsupported 2012-10-12 Userspace RCU 0.7.5 * 19cf3ae Fix: call_rcu list corruption on teardown * Ensure that read-side functions meet 10-line LGPL criterion * tls-compat.h: document sigaltstack(2) limitation * urcu: add notice to URCU_TLS() for it is not strictly async-signal-safe * Document sigaltstack(2) limitation * Documentation: update LICENSE file 2012-08-27 Userspace RCU 0.7.4 * rculfhash API documentation: document destroy RCU read-lock constraint * Fix: rculfhash should be offline while waiting for resize to complete * Add missing entry to gitignore * urcu: move busy-wait code and name it ___cds_wfq_node_sync_next() * urcu: fix compat_futex_noasync() * urcu: add hint to DEFINE_URCU_TLS() for compound types * Fix: CAA_BUILD_BUG_ON should refer to CAA_BUILD_BUG_ON_ZERO * Add MIPS support * Compatibility: remove bash-ismsm from test scripts * Fix inappropriate lib behavior: don't call exit() * Fix: re-enable compatibility with autoconf < 2.64 * Fix c99 compatibility: use __asm__ and __volatile__ in public headers * Fix c99 compatibility: use __typeof__ instead of typeof in public headers * warning fix: tests urcutorture for NetBSD 5 2012-06-01 Userspace RCU 0.7.3 * Fix tests: make dist lib dependency * Update README for OS supported, tests dependency * Add CodingStyle to tarball * Add coding style document * Test fix: test_perthreadlock uninitialized mutex * tests: support FreeBSD short "time" args * freebsd 8.2 fix: define MAP_ANONYMOUS for compatibility 2012-05-24 Userspace RCU 0.7.2 * Fix library compatibility 2012-05-24 Userspace RCU 0.7.1 * fix: uatomic_set return value compile fix for non-x86 arch. 2012-05-21 Userspace RCU 0.7.0 * Cleanup: header comments coding style * Document uatomic operations * Update return value of "set" operations * Fix mremap wrapper for NetBSD 5 * Use urcu/tls-compat.h * Implement urcu/tls-compat.h * Add TLS detection m4 macro * document concurrent data structures * documentation: refer to rcu-api.txt * Move API.txt to doc/rcu-api.txt, install in system doc/ * rculfhash: document implied memory barriers * rculfhash: Ensure future-proof memory barrier semantic consistency * API cleanup: use "uatomic_*" in cmm_smp_mb__ API * uatomic: add memory barrier API for and/or/add/sub/inc/sub * rculfhash: add runhash.sh test script * rculfhash tests: add missing check * rculfhash: fix: race between replace and del operations * rculfhash: replace unneeded rcu_dereference by CMM_LOAD_SHARED * rculfhash: use do {} while (0) for dbg_printf() * rculfhash: cleanup typo * rculfhash: update API comments * rculfhash: update comments in implementation * rculfhash tests: add long hash chains tests * rculfhash tests: add uniqueness test * rculfhash test: print test name * rculfhash: stress requirement in documentation * rculfhash: fix typo * rculfhash tests: use array of callbacks to modularize * rculfhash tests: modularize tests * rculfhash: document ordering guarantees * rculfhash: document linearizability guarantees * rculfhash: update removal comment * Add missing files to .gitignore * Fix out-of-tree build * rculfhash: check malloc NULL pointer * Fix uatomic sign cast * Remove unused jhash.h file * Fix: use known license text, fix incorrect FSF address * Fix: add missing sched.h include in rculfhash.c * Allow tests to run on architectures without per-cpu call_rcu support * Hash table test: FreeBSD compatibility fix * tests: define _GNU_SOURCE instead of __USE_GNU * RCU lock-free hash table: implement cds_lfht_is_node_deleted() * Define _GNU_SOURCE to access CPU_ZERO() macro in uClibc * Install ChangeLog and README into system's doc * Fix AC_LANG_SOURCE usage: only takes one parameter * Fix autoconf futex check * configure.ac: Use AC_LANG_SOURCE for if else macros * Refresh autoconf files * Update gitignore * rculfhash: add comment about hash seed randomness within test program * readme: state correct GCC dependency for ARM * rculfhash: remove an invocation of bit_reverse_ulong() when adding * rculfhash: remove unneeded conversion * rculfhash: remove unneeded clear_flag() * cds_lfht_replace: add checks for old/new node hash/value match * rculfhash: use node instead of iter argument for deletion * rculfhash: number of logically removed nodes should not appear in API * Document that flags could be represented on 2 bits * Add missing REMOVAL_OWNER_FLAG comment to cds_lfht_node comment * _cds_lfht_del is not used for buckets anymore, remove parameter * rculfhash: Relax atomicity guarantees required by removal operation * remove unneeded "return;" * simplify the deletion for bucket node * Remove unneeded code * Cleanup DEFINE_RCU_FLAVOR() * Add cds_lfht_ prefix to fls_ulong, get_count_order_ulong, get_count_order_u32 * Merge RCU Lock-Free Resizable Hash Table 2011-12-12 Userspace RCU 0.6.7 * Add compat file for test urcu wfs * Add missing compat file for wfq test * hlist.h: Add missing stddef.h include for NULL * call_rcu: Add missing call_rcu_before_fork and call_rcu_after_fork_parent declarations * Describe autotools/libtool/automake version dependency * Remove m4_ifdef for AC_PROG_LIBTOOL (deprecated) * Support older autotools * Apply autoupdate to configure.ac * Fix build for amd64 environment (for FreeBSD 8.2) * Add missing rcu_dereference_sym_bp * Install test scripts in the dist tarball 2011-11-03 Userspace RCU 0.6.6 * qsbr vs call_rcu : remove exit assertion * Rename likely/unlikely to caa_likely/caa_unlikely * Reinsert missing test_urcu_*.c files (missing in rename) * rename test_qsbr to test_urcu_qsbr * urcu-pointer: fix rcu_set_pointer unset return value * Enhance API.txt documentation, add to Makefile as EXTRA_DIST 2011-09-29 Userspace RCU 0.6.5 * call_rcu: Document call_rcu requirements * call_rcu: fix error handling of malloc error * urcu call_rcu: Use RCU read-side protection for per-cpu call_rcu data * urcu,call_rcu: Cleanup call_rcu_data pointers before use in child * urcu,call_rcu: avoid create call_rcu_data for child when unneed * urcu,defer_rcu: Make defer_rcu encoding more compact for marker * urcu_defer: Use cancellation flag instead of pthread_cancel() * urcu,call_rcu: protects call_rcu_data_list when remove node * Create default call rcu data upon per-cpu call-rcu teardown * powerpc: use __NO_LWSYNC__ check to use appropriate lwsync/sync opcode * cmm: provide lightweight smp_rmb/smp_wmb on PPC * atomic: provide seq_cst semantics on powerpc * avoid leaking crdp for failed path * Return -EEXIST when the old cpu call_rcu_data has not been removed * protect writing to per_cpu_call_rcu_data[*] * wake up default call_rcu thread after we move the leftover callbacks * avoid memory leak in call_rcu_data_free() * urcu call_rcu: fix use after free() * use get_cpu_call_rcu_data() for get_call_rcu_data() * init maxcpus before use * call_rcu implementation: add missing static * Document QSBR interaction with mutexes * urcu-pointer: implement URCU_FORCE_CAST for C++ compatibility of urcu-pointer.h * urcu-qsbr: use rcu_thread_offline/rcu_thread_online instead of inlining them * Pair all_cpu call_rcu create with free * QSBR: add missing wakeups in synchronize_rcu code * cmm: do not generate code for smp_rmb/smp_wmb on x86_64 * cmm: let per-arch files provide cmm_smp_* barriers * Optimize caa_get_cycles() for PowerPC64 * lfq/lfs tests: use call_rcu * list: Add cds_list_first_entry * rculfstack/queue: define _LGPL_SOURCE around static header include * Add __rcu annotation (unimplemented) * Fix incorrect fsf address in header files * wfstack: push returns prior stack emptiness state * Make lf stack push return if the stack was empty * Document caa_container_of * urcu-bp: do not call munmap for NULL registry at exit * urcu libraries can directly use the _LGPL_SOURCE wfqueue * rculfstack: document "push" * Add runall.sh to tarball * Fix build order of liburcu-cds-common * Fix missing check for SYS_membarrier in map header * urcu-qsbr: avoid useless futex wakeups and burning CPU for long grace periods * api: reimplement BUILD_BUG_ON in compiler.h * test api cleanup: remove unused primitives * put thread offline while waiting for the init flag * urcu: move private definitions to .c file * urcu-bp: move private definitions to .c file * urcu-qsbr: move private definitions to .c file * rcutorture: fix rcutorture-qsbr * wfqueue: fix type-incorrect assignment * Fix tests Makefile EXTRA_DIST to use api.h * Fix choice of default flavour in urcu/map/urcu.h * api: remove list/hlist * api: remove arch-specific files * api: make api_gcc.h a superset of the other headers * tests api: remove atomics * put thread offline while waiting for the init flag * urcu: move private definitions to .c file * urcu-bp: move private definitions to .c file * urcu-qsbr: move private definitions to .c file * rcutorture: fix rcutorture-qsbr * wfqueue: fix type-incorrect assignment * Use caa_ prefix for min() and max() 2011-07-21 Userspace RCU 0.6.4 * uatomic: Fix ARM build errors in uatomic. * urcu tests: hold mutex across use of custom allocator. * Portability fixes to support FreeBSD 8.2. 2011-06-27 Userspace RCU 0.6.3 * uatomic: Fix i386 compatibility build errors in uatomic. 2011-06-13 Userspace RCU 0.6.2 * Fix build on powerpc. 2011-06-13 Userspace RCU 0.6.1 * Add missing headers into release tarball: urcu-call-rcu-impl.h and urcu-defer-impl.h 2011-06-10 Userspace RCU 0.6.0 * 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 2011-03-04 Userspace RCU 0.5.4 * urcu-bp: Update fork() handling Introduce extern void rcu_bp_before_fork(void); extern void rcu_bp_after_fork_parent(void); extern void rcu_bp_after_fork_child(void); to handle fork gracefully. These disable signals and hold the registry mutex across forks. (this flavor of the liburcu library ("bp" for "bulletproof") is mainly used by UST, the user-space tracer). 2011-03-03 Userspace RCU 0.5.3 * Add support for older ARM single-CPU architecturess (pre-ARMv7) (thanks to Jason Wessel from WindRiver). * Fix ARMv7 cmm_rmb/cmm_wmb primitives (use a dmb barrier). * Remove leftover list_t type from urcu/list.h (namespace cleanup). * urcu_defer: handle malloc error value. * Update README file to describe urcu interaction with fork() when not * followed by an exec() system call. 2010-11-18 Userspace RCU 0.5.2 * Fix renaming error introduced in 0.5.0. 2010-11-18 Userspace RCU 0.5.1 * Fix renaming error introduced in 0.5.0. (incomplete fix) 2010-11-18 Userspace RCU 0.5.0 * Version 0.5.0 changes the API presented by memory model, architecture abstraction and data structure primitives in headers. The prefixes are, respectively: - cmm_ : Concurrent Memory Model - caa_ : Concurrent Architecture Abstraction - cds_ : Concurrent Data Structures 2010-03-04 Userspace RCU 0.4.2 * Add generic uatomic ops support. * Bugfix in urcu-bp. (rare garbage collection bug occurring in multithreaded environment). Only affects urcu-bp users (UST). 2010-02-12 Userspace RCU 0.4.1 * s390: compilation fix. 2010-01-30 Userspace RCU 0.4.0 * API change: SIGURCU -> SIGRCU * API changes: standardize on rcu_ prefix. * API change: urcu_init -> rcu_init. * urcu/config.h options renamed to CONFIG_RCU_HAVE_FENCE, CONFIG_RCU_HAVE_FUTEX, CONFIG_RCU_SMP, CONFIG_RCU_COMPAT_ARCH. ((moving from URCU -> RCU). * library names changes: liburcu becomes the "default" version, using sys_membarrier() when available, and using liburcu-mb as a fallback. * The signal-based liburcu is renamed from liburcu to liburcu-signal. People previously using the signal-based "liburcu" will automatically be moved to the "default" liburcu version. 2009-11-16 Userspace RCU 0.3.1 * Add support for sparcv9 32-bit build. * Update build system to use --host instead of --target. 2009-11-03 Userspace RCU 0.3.0 * API change for the "deferred work" interface. 2009-10-14 Userspace RCU 0.2.3 * Move to autotools. * Automated architecture detection, with i386 fallback. * Detect if NR_futex is on the system, fallback on portable alternatives. * Add configure mode for UP-only systems. 2009-10-02 Userspace RCU 0.2.2 * Phases out rcu_publish_content() api. * Adds type checking to urcu-pointer.h pointer exchange primitives. 2009-10-02 Userspace RCU 0.2.1 * small header dependency fix for rculist.h. * new "liburcu-bp.so" : "Bulletproof RCU", made especially for the UST userspace tracer. It's a library that sacrifices a bit of read-side performance for automatically monitoring thread creation/removal. See README for details. 2009-10-01 Userspace RCU 0.2 * Clarify usage of rcu_cmpxchg_pointer, rcu_xchg_pointer, rcu_set_pointer. 2009-09-29 Userspace RCU 0.1 * Initial release. |