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 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 2013-09-06 Userspace RCU 0.8.0 * Fix: hash table growth (for small tables) should be limited * Fix: doc/examples cross-build * Introduce URCU_INLINE_SMALL_FUNCTIONS * Add missing tests/common/Makefile.am * README: document make check/regtest/bench * tests: split in check, regtest and bench targets * Cleanup: doc/examples makefile * Fix: doc/examples VPATH build * doc/examples: Move the LIBS after the OBJECTS in the Makefile * Document build work-around on MacOS X * Fix tests: use of uninitialized variables * test_urcu_hash*: initialize TLS seeds * doc/examples: cds_lfht_for_each_entry_duplicate * doc/examples: cds_lfht_lookup * doc/examples: cds_lfht_destroy * doc/examples: cds_lfht_add_replace * doc/examples: cds_lfht_add_unique * doc/examples: cds_lfht_add/cds_lfht_del * doc/examples: add rculfqueue example * doc/examples: add synchronize_rcu() * doc/examples: add bp flavor * doc/examples: add dist toplevel makefile * doc/examples: add membarrier flavor * doc/examples: document call_rcu() * doc/examples: update qsbr example * urcu signal: remove assertion on exit * doc/examples: signal flavor * doc/examples: add mb flavor * doc/examples: update qsbr * doc/examples: introduce urcu-flavors examples directory * doc/examples: enhance rcu-flavor-qsbr example * doc/examples: rename qsbr-minimal to rcu-flavor-qsbr * doc/examples: automake stop on error * doc/examples: hlist * hlist/rcuhlist update * doc/examples: fix typo in list example * rcuhlist: make pointer stores atomic * hlist, rcuhlist: cleanup coding style * doc/examples: lfstack * doc/examples: update cds_wfs_pop_all_blocking * doc/examples: cds_wfs_pop_all_blocking * doc/examples: cds_wfs_pop * doc/examples: add missing Makefile * doc/examples: cds_wfs_push * doc/wfcqueue: cds_wfcq_splice * doc/examples: add cds_wfcq_dequeue * doc/examples: wfcq needs to link against urcu-common * doc/examples: update queue comment * doc/examples: fix make clean * gitignore: add qsbr-minimal * doc/examples: cds_wfcq_enqueue * doc/examples: Move LIBS to each makefile * doc/examples: cds_list_for_each_rcu * doc/examples: cds_list_for_each_entry_rcu * doc/examples: cds_list_replace_rcu * doc/examples: cds_list_add_tail_rcu * doc/examples: cds_list_del_rcu * doc/examples: cds_list_add_rcu * rculist: ensure atomic updates of next pointers * rculist: implement cds_list_add_tail_rcu * rculist.h and list.h style cleanup * example makefile: add missing cd .. * Update gitignore * Fix: examples Makefile on FreeBSD * hash table test: don't redefine CACHE_LINE_SIZE * tests: use thread-id.h wrapper * Implement thread-id.h wrapper * tests: add missing unsigned long casts to pthread_self() * Fix: don't build examples in static builds * Add QSBR minimal example * compiler.h: implement CAA_ARRAY_SIZE() * document rcu barrier * rcu barrier: handle OOM die urcu_die * Implement rcu_barrier() * rculfhash: document destroy context limitations * Add MIPS to README * Update README * Update README testing info about FreeBSD * test: fix api.h missing if brackets * tests: fix incorrect counter * Fix: membarrier fallback symbol conflict * Fix: Use a filled signal mask to disable all signals * urcu-bp: introduce struct urcu_gp * Fix: struct urcu_gp broke multiflavor * Cleanup test usage printout * wfstack tests: use pop "last" state info * wfstack: return whether pop is popping the last element * wfcqueue tests: use dequeue empty state * wfcqueue: return whether dequeue is dequeuing last element * urcu: avoid false sharing for rcu_gp_ctr * urcu: make the code of urcu-qsbr as normal urcu * rculfhash: detect if resize/destroy are called within RCU read-side C.S. * Documentation: rculfhash: cds_lfht_resize not within read-side C.S. * fix: rculfhash don't change qsbr online state * Add rcu_read_ongoing() API to each urcu flavor * Add "sparc" host cpu to configure.ac * futex: include syscall.h instead of sys/syscall.h * Add tab to output in order to allow easy nesting of tables. * Remove urcu-api-list.sh from dist tarball * Add urcu-api-list.sh script * list: implement cds_list_for_each_safe() * 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 * Spelling cleanups within comments and documentation * Fix configure checks for Tile * uatomic: style fix * doc/cds-api.txt: expand documentation * README: document each API file * README: reorganize * Add compilation support for the TileGX architecture * wfstack: add nonblocking to _LGPL_SOURCE API * Discourage use of pthread_atfork() for call_rcu handlers * Fix call_rcu fork handling * test: fork handling * rculfhash: add cds_lfht_replace to the write operations in the comments * urcu: fix comments for cds_list_for_each_prev() * documentation: fix rcu-api.txt duplicates * test wfcq: remove unneeded urcu.h include * test wfs: remove unneeded urcu.h include * urcu: declare test_urcu_multiflavor functions * urcu: remove the wrong comma * wfstack: implement nonblocking pop and next * wfcqueue: document first/next return values * wfstack: update comments about cds_wfs_empty/first being wait-free * wfstack API: rename cds_wfs_first_blocking to cds_wfs_first * wfstack test: test if number of push to empty vs pop_all match * wfstack: document first/next return values * test wfstack: enforce external mutex if needed by default * test wfcqueue: enforce external mutex if needed by default * urcu-mb/signal/membarrier: batch concurrent synchronize_rcu() * urcu-wait: move queue management code into urcu-wait.h * urcu-wait: move wait code into separate file * urcu-qsbr: batch concurrent synchronize_rcu() * tests: use standard malloc/free for synchronize_rcu() * urcu-bp: move quiescent threads to separate list * urcu-mb/signal/membarrier: move quiescent threads to separate list * urcu-qsbr: move offline threads to separate list * urcu-bp: improve 2-phase wait scheme * urcu-mb/signal/membarrier: improve 2-phase wait scheme * urcu-qsbr: improve 2-phase wait scheme * wfcqueue: implement mutex-free splice * wfcqueue: document empty criterion * urcu-call-rcu: use wait-free splice return value * test wfcqueue: add tests for queue state return value * wfcqueue: enqueue and splice return queue state * Fix: wfcqueue nonblocking dequeue * wfcqueue: Fix lock and unlock functions * runtests: Make path of time binary configurable * urcu-qsbr: skip Q.S. reporting if already reported * 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 * Revert "Fix: cross-build: configure.ac should use --target, not --host" * Fix: cross-build: configure.ac should use --target, not --host * test_urcu_wfcq: add splice and nosync tests * test_urcu_wfs: cleanup * test_urcu_lfs: cleanup * Fix static linking: add missing static for _defer_rcu * tests: report error value for make check * Add multiflavor test program * Fix static linking: fix symbol name namespaces * Fix static linking: add missing static to thr_defer * Fix static linking: add missing static * deprecation: fix build with gcc < 4.5 * wfstack.c: update copyright notice * Update wfstack copyright notice * Comment fix: update associated LGPL header name * Update cds-api.txt following API deprecations * Deprecate wfqueue * Deprecate rculfstack * wfcqueue: introduce nonblocking API * lfstack: test pop_all and pop * lfstack: implement empty, pop_all and iterators, document API * lfstack: implement test * lfstack: implement lock-free stack * wfstack: implement pop_all and iteration tests * wfstack: implement cds_wfs_pop_all and iterators, document API * rculfhash test: fix trivial memleak and return node leak and errors * rculfhash: add missing extern * Cleanup: fix cppcheck errors * wfcqueue: remove ancient comment * test_urcu_lfq: remove rcu_defer_register_thread() from test_urcu_lfq * test_urcu_lfq: test for the proper pointer * test_urcu_lfs: remove rcu_defer_register_thread() from test_urcu_lfs * test_urcu_lfs: test for the proper pointer * wfcqueue: clarify locking usage * Document APIs in README * Test cleanup: replace "l" parameter by "loops" * Add wfcqueue header to cds.h * Fix: urcu-bp, urcu, urcu-qsbr should include wfcqueue * Fix: call_rcu list corruption on teardown (documentation) * call_rcu: remove head field alignement, explain wfcqueue motivation * wfcqueue: update credits in patch documentation * wfcqueue documentation: hint at for_each iterators * Fix urcu-call-rcu-impl.h: false-sharing * call_rcu: use wfcqueue, eliminate false-sharing * wfcqueue test * wfcqueue: implement concurrency-efficient queue * 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.