1 2020-04-09 Userspace RCU 0.12.0
2 * tls-compat.h: introduce DEFINE_URCU_TLS_INIT
3 * Use _umtx_op for futex on FreeBSD
4 * Add FreeBSD, DragonFly to syscall-compat.h
5 * urcu-bp: perform thread registration on urcu_bp_register_thread
6 * Require automake >= 1.12
7 * cds_lfht_is_node_deleted parameter can be marked const
8 * Fix: provide errno as argument to urcu_die()
9 * Fix: rculfhash worker needs to unblock to SIGRCU
10 * Cleanup: test_perthreadlock_timing: handle pthread mutex errors
11 * Fix: SONAME bump to 6.1.0
12 * Cleanup: remove unused variable from configure.ac check
13 * Fix: urcu/futex.h: users of struct timespec should include time.h
15 2019-05-06 Userspace RCU 0.11.0
16 * Bump library version to 6:0:1
17 * Cleanup: update code layout to fix old gcc warning
18 * Fix: typo CPPLAGS in examples Makefile
19 * Harmonize pprint macro across projects
20 * Check for TLS support after CC detection
21 * Update macros from the autotools archive
22 * tap-driver.sh: flush stdout after each test result
23 * Update dead link in lgpl-relicensing.txt
24 * Add multiflavor compat identifiers
25 * Cleanup: missing sign compare fixes
26 * Cleanup: enable signed/unsigned compare compiler warning
27 * Cleanup: compiler warning on 32-bit architectures
28 * config.h.in: rename CONFIG_RCU_MULTIFLAVOR to CONFIG_RCU_HAVE_MULTIFLAVOR
29 * rculfhash: implement iterator debugging config option
30 * Fix: examples silent rules on Solaris
31 * Add missing fall through annotations
32 * Fix: symbol aliases with TLS compat
33 * Port: no symbols aliases on MacOS
34 * Add -Wextra to CFLAGS
35 * Add silent mode to examples Makefiles
36 * doc: update examples to API changes
37 * test multiflavor single compile unit
38 * Update README following API changes
39 * Use new header locations for includes from urcu code
40 * Update call-rcu.h and defer.h comments and include guards
41 * rculfqueue.h: do not include urcu-call-rcu.h
42 * rculfhash: support use with multiple flavors per compile unit
43 * rculfhash: do not include urcu-call-rcu.h from public API
44 * Refactor liburcu to support many flavors per compile unit
45 * Fix: only wait if work queue is empty in real-time mode
46 * Fix: don't wait after completion of a work queue job batch
47 * Fix: don't wait after completion of job batch if work queue is empty
48 * Fix: workqueue: struct urcu_work vs rcu_head mixup
49 * Cleanup: workqueue: update comments referring to call-rcu
50 * Fix: mixup between URCU_WORKQUEUE_RT and URCU_CALL_RCU_RT
51 * test_rwlock: Add per-thread count to verbose output
52 * Add *.exe to gitignore for Cygwin
53 * Fix: pthread_rwlock initialization on Cygwin
54 * Fix: compat_futex_noasync on Cygwin
55 * wfcqueue: allow defining CDS_WFCQ_WAIT_SLEEP to override `poll'
56 * Update documentation for call_rcu before/after fork
57 * Add support for the RISC-V architecture
58 * Tests: Add tap-driver.sh for automake < 1.12
59 * Tests: Replace prove by autotools tap runner
60 * liburcu-bp: Use membarrier private expedited when available
61 * liburcu: Use membarrier private expedited when available
62 * rculfhash: improve error handling of mmap backend
63 * Fix: don't use overlapping mmap mappings on Cygwin
64 * Tests fix: errors in shell scripts
65 * Revert "Use initial-exec tls model"
66 * Use initial-exec tls model
67 * Fix: don't use membarrier SHARED syscall command in liburcu-bp
68 * Tests fix: add missing Cygwin thread id
69 * Fix: assignment from incompatible pointer type warnings
70 * Tests fix: unused variable warnings
71 * Fix: add missing m68k headers to dist
72 * Bump version to 0.11-pre
74 2017-06-12 Userspace RCU 0.10.0
75 * Bump library soname due to urcu flavor structure change
76 * Cleanup: use mutex_lock() wrapper in rculfhash
77 * Use workqueue in rculfhash
78 * Implement urcu workqueues internal API
79 * Add support for m68k architecture
80 * Set -Wall globally in AM_CFLAGS
81 * Fix: remove double use of PTHREAD_CFLAGS
82 * Re-add PTHREAD_CFLAGS to global CFLAGS
83 * Fix: Don't override user variables within the build system
84 * Add report at the end of configure
85 * uatomic-api docs: use the third-person singular
86 * Add --enable-rcu-debug to configure
87 * ARM32: use dmb ish (inner shareable domain) for smp barriers
88 * Cleanup: remove cmm_wmb() from rcu_xchg_pointer and rcu_cmpxchg_pointer
89 * Fix: uatomic arm32: add missing release barrier before uatomic_xchg
90 * Tests: Add verbose support to test script
91 * Fix: add missing CONFIG_RCU_FORCE_SYS_MEMBARRIER to urcu/config.h.in
92 * Allow forcing the use of sys membarrier
93 * Fix: rcutorture: work-around signal issue on mac os x
94 * Fix: rcutorture should register thread using call_rcu
95 * Fix: add missing backslash in Makefile.am
96 * Fix: Do not use wildcards in include/Makefile.am
97 * Bump version to 0.10-pre
98 * Fix: check for rand_r() in compat-rand.h
99 * Fix: Move rand-compat to private src dir
100 * Fix: remove AC_FUNC_MALLOC from configure.ac
101 * Cleanup: Re-organise source dir
102 * Cleanup: remove leftover manual pthread detection
103 * Fix: update ax_pthread macro to handle newer clang
104 * Update library current version due to adding destroy API
105 * Fix: Use pthread_self to get threadid on OSX
106 * Fix: examples: use destroy API for queues/stacks
107 * Update library age due to new stack/queue destroy API
108 * Fix: tests: invoke destroy APIs for queues/stacks
109 * Fix: add missing destroy functions to queues/stack APIs
110 * Fix: add missing __cds_wfcq_init for LGPL API
111 * Fix: memory leak on hash table destroy
112 * Fix: Add failover for platforms without nproc
113 * Fix: use clock_get_time for caa_get_cycles fallback on MacOSX
114 * Fix: syscall-compat.h MacOSX support
115 * Fix: Add solaris-build.md to dist
116 * rculfhash: Documentation: clarify need for grace period before "re-using"
117 * Port: build shared libraries in Cygwin
118 * Port: fix compatibility header for Cygwin
119 * Add GNU Hurd support to syscall-compat.h
120 * Add support for aarch64_be
121 * Fix: urcu-bp: re-initialize list head on library exit
122 * bootstrap: Standardize on autoreconf -vi
123 * Harmonize bootstrap script across projects
124 * Fix: examples make distcheck failure
125 * wfcqueue: add C++ compatibility API
126 * Fix: CDS_WFCQ_WOULDBLOCK typing for c++
127 * Fix: configure.ac: check for possibly required libs for clock_gettime
128 * Support for NIOS2 architecture
129 * urcu_ref_get_safe: introduce new API
130 * Fix: handle reference count overflow
131 * Fix: compat_futex should work-around futex signal-restart kernel bug
132 * Support for Xeon-Phi with newer MPSS
133 * sparc64: allocate membarrier system call number
134 * hppa: allocate membarrier system call number
135 * Fix build on non-Linux Debian ports
136 * Fix: urcu-signal: smp_mb_master() needs registry lock
137 * Fix: rculfhash only needs to include urcu-pointers.h
138 * Fix: out-of-tree benchmark/regtest
139 * Fix: add missing regtest and benchmark files to dist tarball
140 * Fix: add missing run.sh to benchmark makefile
142 2015-10-16 Userspace RCU 0.9.0
143 * Bump soname major to 4
144 * Cleanup: remove trailing tab
145 * Fix: Use proper macro to detect stdbool.h
146 * Configure: Add missing checks
147 * Port: Add Solaris build instructions
148 * Fix: regtest outputs valid TAP protocol
149 * Port: Detect nproc bin name in benchmark scripts
150 * Port: Add Solaris getcpu support
151 * Port: Fixes to build system for portability
152 * Port: Add Solaris support to tests/common/thread-id.h
153 * Port: Add Solaris support to urcu/syscall-compat.h
154 * Port: replace bzero() by memset()
155 * Port: make bootstrap script work on most shell
156 * tests: rcutorture: use parameters rather than random
157 * Fix: only define membarrier system call on Linux
159 * Fix: cast caa_cycles_t to unsigned long long
160 * caa_get_cycles: caa_ prefix for type, use CLOCK_MONOTONIC
161 * Cleanup: remove trailing whitespaces at EOL
162 * Cleanup: move generic caa_get_cycles to arch/generic.h
163 * tile: allocate membarrier system call number
164 * ia64: allocate membarrier system call number
165 * aarch64: allocate membarrier system call number
166 * powerpc64le: use "ppc" architecture
167 * arm: allocate membarrier system call number
168 * s390: allocate membarrier system call number
169 * ppc: allocate membarrier system call number
170 * lfstack: relax constraints on node re-use
171 * Fix: format string signedness
172 * Cleanup: tests: Branch condition evaluates to a garbage value
173 * Fix: test: unchecked return value
174 * Fix: test: side-effect in assertion
175 * x86: allocate membarrier system call number
176 * urcu-bp: use sys_membarrier when available
177 * Cleanup: urcu: remove unused membarrier "group" parameter
178 * urcu/ref.h: implement urcu_ref_get_unless_zero()
179 * Fix: compat_futex: uninitialized ret variable
180 * Fix: compat_futex_noasync: don't override return value
181 * Fix: dynamic fallback to compat futex on sys_futex ENOSYS
182 * Detect RCU read-side overflows
183 * Detect RCU read-side underflows
184 * Introduce urcu_assert and registration check
185 * Fix: volatile in assert()
186 * Update following changes to sys_membarrier ABI
187 * uatomic: Specify complete types for atomic function calls
188 * Cleanup: remove unused return value warning from tests
189 * Fix: handle sys_futex() FUTEX_WAIT interrupted by signal
190 * Fix: compat_futex.c: *uaddr should be read as volatile
191 * Cleanup: cast poll delay return value to void
192 * tests: Convert unit tests to TAP
193 * Fix: make benchmark test run in oot build
194 * Fix: call_rcu_thread() affinity failure
195 * Cleanup: cast poll delay return value to void
196 * Cleanup: cast poll delay return value to void
197 * Cleanup: cast poll delay return value to void
198 * Cleanup: cast poll delay return value to void
199 * Cleanup: cast poll() return value to void for delays
200 * urcu: fix deprecation warning with new glibc
201 * urcu: add cds_list_for_each_entry_safe_from macro
202 * Fix: deadlock when thread join is issued in read-side C.S.
203 * Fix: rename RCU_DEBUG to DEBUG_RCU in urcu-qsbr.h
204 * Cleanup some c99 pedantic warnings
205 * Mark braced-groups within expressions with __extension__
206 * Fix: compat_futex_noasync race condition
207 * tests: Use stderr redirection for time output
208 * Fix: use space after rpath for OS X ld
209 * Fix: move transparent union attribute after union declaration for clang
210 * Configure: add check for used type
211 * Configure: add missing check of headers
212 * Configure: add missing check for funcs: memset, strerror
213 * Fix: documentation: urcu-pointer.h: s/rcu_dereference_pointer/rcu_dereference/
214 * urcu-bp/urcu-qsbr: remove unneeded DEBUG_YIELD code
215 * Fix: call rcu should call internal RCU API
216 * Fix: silence gcc -Wextra warning
217 * compiler: use __GNUC__ instead of the undefined __GNUC_MAJOR__
218 * Fix: lfstack reversed empty/non-empty return value
219 * lfstack: fix: add missing __cds_lfs_init
220 * wfstack: add missing union parameters
221 * Fix: preserve example files' timestamps when copying
222 * wfstack: implement mutex-free wfstack with transparent union
223 * wfcqueue: Implement mutex-free wfcqueue head with transparent union
224 * lfstack: Implement mutex-free stack head with transparent union (v2)
225 * rculfhash: remove duplicated code
226 * rculfhash: handle pthread_create failures
227 * rculfhash: fall back to single-threaded resize on calloc failure
228 * x86: drop extra semi-colon in caa_cpu_relax
229 * Cleanup: tests: cast console write return value as void
230 * Modernize doc using Markdown
231 * Fix: update automake following README to README.md change
232 * Modernize README using Markdown
233 * Fix: incorrect parenthesis in cds_hlist_for_each_entry_safe_2
234 * Fix: Use after free in rcu_barrier()
235 * Fix: rcu_barrier(): uninitialized futex field
236 * call_rcu threads should clear their PAUSED flag when they unpause
237 * test_urcu_fork: test many fork, with 3 children deep
238 * Update list of supported architectures in README
239 * Add support for hppa/PA-RISC architecture
240 * Use autoconf AM_MAINTAINER_MODE
241 * Use gcc atomics on aarch64/powerpc64le
242 * Fix: move wait loop increment before first conditional block
243 * Fix: high cpu usage in synchronize_rcu with long RCU read-side C.S.
244 * Fix: out of tree build: doc/examples
245 * Fix: out of tree build tests/common
246 * tests/unit: use lib rather than source
247 * automake: Rename INCLUDES to AM_CPPFLAGS (new name)
248 * tests regressions: use lib rather than recompile from source
249 * tests: use common lib rather than recompile compat sources
250 * urcu tests: use lib rather than compile from source
251 * urcu mb tests: use lib rather than recompile from source
252 * urcu signal tests: use library rather than recompile source
253 * tests: move yield debug to common test library
254 * tests urcu bp: use lib rather than recompile source
255 * test_urcu_defer: link on urcu lib rather than recompile source
256 * tests/benchmark: use urcu qsbr lib rather than recompile from source
257 * Pass the CC variable to the example Makefiles
258 * Fix: urcu-bp interaction with threads vs constructors/destructors
259 * x86 barrier for Xeon Phi: use rsp on x86-64
260 * Set RCU_HAVE_FENCE to false on Intel Xeon Phi
261 * Fix undefined NULL pointer arithmetic in hlist
262 * Cleanup: Check for pthread in Libc
263 * Cleanup: Android: Do not redefine gettid
264 * Fix undefined NULL pointer arithmetic
265 * Android: implement rand_r()
266 * Android: do not redefine gettid on Android
267 * Android: add a compat layer for 'syscall.h'
268 * Android: do not link pthread on Android
269 * Android: configure.ac Android check
270 * Blacklist ARM gcc 4.8.0, 4.8.1, 4.8.2
271 * rculfhash: document max_nr_buckets = 0
272 * Library major version number (soname) increment to 3
273 * Fix: tls-compat multi-lib conflict
274 * Use cross compiler for doc examples
275 * Add lttng-dev mailing list to readme
276 * wfcqueue: remove misleading comment
277 * gcc warning fixes: -Wsign-compare and -Wextra
278 * Fix: urcu-qsbr: reversed logic on RCU_DEBUG
279 * Fix: urcu-bp segfault in glibc pthread_kill()
280 * Fix urcu-bp: don't move registry
281 * Fix: compat futex duplicated lock and completion
282 * Fix: i386 compat code duplicated mutex instances
283 * Fix: urcu-bp: Bulletproof RCU arena resize bug
284 * Fix: test_mutex.c uninitialized mutex
286 2013-09-06 Userspace RCU 0.8.0
287 * Fix: hash table growth (for small tables) should be limited
288 * Fix: doc/examples cross-build
289 * Introduce URCU_INLINE_SMALL_FUNCTIONS
290 * Add missing tests/common/Makefile.am
291 * README: document make check/regtest/bench
292 * tests: split in check, regtest and bench targets
293 * Cleanup: doc/examples makefile
294 * Fix: doc/examples VPATH build
295 * doc/examples: Move the LIBS after the OBJECTS in the Makefile
296 * Document build work-around on MacOS X
297 * Fix tests: use of uninitialized variables
298 * test_urcu_hash*: initialize TLS seeds
299 * doc/examples: cds_lfht_for_each_entry_duplicate
300 * doc/examples: cds_lfht_lookup
301 * doc/examples: cds_lfht_destroy
302 * doc/examples: cds_lfht_add_replace
303 * doc/examples: cds_lfht_add_unique
304 * doc/examples: cds_lfht_add/cds_lfht_del
305 * doc/examples: add rculfqueue example
306 * doc/examples: add synchronize_rcu()
307 * doc/examples: add bp flavor
308 * doc/examples: add dist toplevel makefile
309 * doc/examples: add membarrier flavor
310 * doc/examples: document call_rcu()
311 * doc/examples: update qsbr example
312 * urcu signal: remove assertion on exit
313 * doc/examples: signal flavor
314 * doc/examples: add mb flavor
315 * doc/examples: update qsbr
316 * doc/examples: introduce urcu-flavors examples directory
317 * doc/examples: enhance rcu-flavor-qsbr example
318 * doc/examples: rename qsbr-minimal to rcu-flavor-qsbr
319 * doc/examples: automake stop on error
320 * doc/examples: hlist
321 * hlist/rcuhlist update
322 * doc/examples: fix typo in list example
323 * rcuhlist: make pointer stores atomic
324 * hlist, rcuhlist: cleanup coding style
325 * doc/examples: lfstack
326 * doc/examples: update cds_wfs_pop_all_blocking
327 * doc/examples: cds_wfs_pop_all_blocking
328 * doc/examples: cds_wfs_pop
329 * doc/examples: add missing Makefile
330 * doc/examples: cds_wfs_push
331 * doc/wfcqueue: cds_wfcq_splice
332 * doc/examples: add cds_wfcq_dequeue
333 * doc/examples: wfcq needs to link against urcu-common
334 * doc/examples: update queue comment
335 * doc/examples: fix make clean
336 * gitignore: add qsbr-minimal
337 * doc/examples: cds_wfcq_enqueue
338 * doc/examples: Move LIBS to each makefile
339 * doc/examples: cds_list_for_each_rcu
340 * doc/examples: cds_list_for_each_entry_rcu
341 * doc/examples: cds_list_replace_rcu
342 * doc/examples: cds_list_add_tail_rcu
343 * doc/examples: cds_list_del_rcu
344 * doc/examples: cds_list_add_rcu
345 * rculist: ensure atomic updates of next pointers
346 * rculist: implement cds_list_add_tail_rcu
347 * rculist.h and list.h style cleanup
348 * example makefile: add missing cd ..
350 * Fix: examples Makefile on FreeBSD
351 * hash table test: don't redefine CACHE_LINE_SIZE
352 * tests: use thread-id.h wrapper
353 * Implement thread-id.h wrapper
354 * tests: add missing unsigned long casts to pthread_self()
355 * Fix: don't build examples in static builds
356 * Add QSBR minimal example
357 * compiler.h: implement CAA_ARRAY_SIZE()
358 * document rcu barrier
359 * rcu barrier: handle OOM die urcu_die
360 * Implement rcu_barrier()
361 * rculfhash: document destroy context limitations
364 * Update README testing info about FreeBSD
365 * test: fix api.h missing if brackets
366 * tests: fix incorrect counter
367 * Fix: membarrier fallback symbol conflict
368 * Fix: Use a filled signal mask to disable all signals
369 * urcu-bp: introduce struct urcu_gp
370 * Fix: struct urcu_gp broke multiflavor
371 * Cleanup test usage printout
372 * wfstack tests: use pop "last" state info
373 * wfstack: return whether pop is popping the last element
374 * wfcqueue tests: use dequeue empty state
375 * wfcqueue: return whether dequeue is dequeuing last element
376 * urcu: avoid false sharing for rcu_gp_ctr
377 * urcu: make the code of urcu-qsbr as normal urcu
378 * rculfhash: detect if resize/destroy are called within RCU read-side C.S.
379 * Documentation: rculfhash: cds_lfht_resize not within read-side C.S.
380 * fix: rculfhash don't change qsbr online state
381 * Add rcu_read_ongoing() API to each urcu flavor
382 * Add "sparc" host cpu to configure.ac
383 * futex: include syscall.h instead of sys/syscall.h
384 * Add tab to output in order to allow easy nesting of tables.
385 * Remove urcu-api-list.sh from dist tarball
386 * Add urcu-api-list.sh script
387 * list: implement cds_list_for_each_safe()
388 * Fix: tests/api.h use cpuset.h
389 * Fix hurd-i386: move cpuset tests outside of sched_setaffinity conditional
390 * Fix tests: finer-grained use of CPU_SET, CPU_ZERO and cpu_set_t
392 * Fix build on architectures with HAVE_SCHED_GETCPU but without HAVE_SYSCONF
393 * README: document that Clang 3.0 (based on LLVM 3.0) is supported
394 * clang: silence "unused expression result" warning
395 * rculfhash: add assertions on node alignment
396 * Spelling cleanups within comments and documentation
397 * Fix configure checks for Tile
399 * doc/cds-api.txt: expand documentation
400 * README: document each API file
402 * Add compilation support for the TileGX architecture
403 * wfstack: add nonblocking to _LGPL_SOURCE API
404 * Discourage use of pthread_atfork() for call_rcu handlers
405 * Fix call_rcu fork handling
406 * test: fork handling
407 * rculfhash: add cds_lfht_replace to the write operations in the comments
408 * urcu: fix comments for cds_list_for_each_prev()
409 * documentation: fix rcu-api.txt duplicates
410 * test wfcq: remove unneeded urcu.h include
411 * test wfs: remove unneeded urcu.h include
412 * urcu: declare test_urcu_multiflavor functions
413 * urcu: remove the wrong comma
414 * wfstack: implement nonblocking pop and next
415 * wfcqueue: document first/next return values
416 * wfstack: update comments about cds_wfs_empty/first being wait-free
417 * wfstack API: rename cds_wfs_first_blocking to cds_wfs_first
418 * wfstack test: test if number of push to empty vs pop_all match
419 * wfstack: document first/next return values
420 * test wfstack: enforce external mutex if needed by default
421 * test wfcqueue: enforce external mutex if needed by default
422 * urcu-mb/signal/membarrier: batch concurrent synchronize_rcu()
423 * urcu-wait: move queue management code into urcu-wait.h
424 * urcu-wait: move wait code into separate file
425 * urcu-qsbr: batch concurrent synchronize_rcu()
426 * tests: use standard malloc/free for synchronize_rcu()
427 * urcu-bp: move quiescent threads to separate list
428 * urcu-mb/signal/membarrier: move quiescent threads to separate list
429 * urcu-qsbr: move offline threads to separate list
430 * urcu-bp: improve 2-phase wait scheme
431 * urcu-mb/signal/membarrier: improve 2-phase wait scheme
432 * urcu-qsbr: improve 2-phase wait scheme
433 * wfcqueue: implement mutex-free splice
434 * wfcqueue: document empty criterion
435 * urcu-call-rcu: use wait-free splice return value
436 * test wfcqueue: add tests for queue state return value
437 * wfcqueue: enqueue and splice return queue state
438 * Fix: wfcqueue nonblocking dequeue
439 * wfcqueue: Fix lock and unlock functions
440 * runtests: Make path of time binary configurable
441 * urcu-qsbr: skip Q.S. reporting if already reported
442 * Fix TLS detection: test with linker, add --disable-compiler-tls
443 * Cleanup: cast pthread_self() return value to unsigned long
444 * Fallback mechanism not working on platform where TLS is unsupported
445 * Revert "Fix: cross-build: configure.ac should use --target, not --host"
446 * Fix: cross-build: configure.ac should use --target, not --host
447 * test_urcu_wfcq: add splice and nosync tests
448 * test_urcu_wfs: cleanup
449 * test_urcu_lfs: cleanup
450 * Fix static linking: add missing static for _defer_rcu
451 * tests: report error value for make check
452 * Add multiflavor test program
453 * Fix static linking: fix symbol name namespaces
454 * Fix static linking: add missing static to thr_defer
455 * Fix static linking: add missing static
456 * deprecation: fix build with gcc < 4.5
457 * wfstack.c: update copyright notice
458 * Update wfstack copyright notice
459 * Comment fix: update associated LGPL header name
460 * Update cds-api.txt following API deprecations
462 * Deprecate rculfstack
463 * wfcqueue: introduce nonblocking API
464 * lfstack: test pop_all and pop
465 * lfstack: implement empty, pop_all and iterators, document API
466 * lfstack: implement test
467 * lfstack: implement lock-free stack
468 * wfstack: implement pop_all and iteration tests
469 * wfstack: implement cds_wfs_pop_all and iterators, document API
470 * rculfhash test: fix trivial memleak and return node leak and errors
471 * rculfhash: add missing extern
472 * Cleanup: fix cppcheck errors
473 * wfcqueue: remove ancient comment
474 * test_urcu_lfq: remove rcu_defer_register_thread() from test_urcu_lfq
475 * test_urcu_lfq: test for the proper pointer
476 * test_urcu_lfs: remove rcu_defer_register_thread() from test_urcu_lfs
477 * test_urcu_lfs: test for the proper pointer
478 * wfcqueue: clarify locking usage
479 * Document APIs in README
480 * Test cleanup: replace "l" parameter by "loops"
481 * Add wfcqueue header to cds.h
482 * Fix: urcu-bp, urcu, urcu-qsbr should include wfcqueue
483 * Fix: call_rcu list corruption on teardown (documentation)
484 * call_rcu: remove head field alignement, explain wfcqueue motivation
485 * wfcqueue: update credits in patch documentation
486 * wfcqueue documentation: hint at for_each iterators
487 * Fix urcu-call-rcu-impl.h: false-sharing
488 * call_rcu: use wfcqueue, eliminate false-sharing
490 * wfcqueue: implement concurrency-efficient queue
491 * Ensure that read-side functions meet 10-line LGPL criterion
492 * tls-compat.h: document sigaltstack(2) limitation
493 * urcu: add notice to URCU_TLS() for it is not strictly async-signal-safe
494 * Document sigaltstack(2) limitation
495 * Documentation: update LICENSE file
497 2012-08-27 Userspace RCU 0.7.4
498 * rculfhash API documentation: document destroy RCU read-lock constraint
499 * Fix: rculfhash should be offline while waiting for resize to complete
500 * Add missing entry to gitignore
501 * urcu: move busy-wait code and name it ___cds_wfq_node_sync_next()
502 * urcu: fix compat_futex_noasync()
503 * urcu: add hint to DEFINE_URCU_TLS() for compound types
504 * Fix: CAA_BUILD_BUG_ON should refer to CAA_BUILD_BUG_ON_ZERO
506 * Compatibility: remove bash-ismsm from test scripts
507 * Fix inappropriate lib behavior: don't call exit()
508 * Fix: re-enable compatibility with autoconf < 2.64
509 * Fix c99 compatibility: use __asm__ and __volatile__ in public headers
510 * Fix c99 compatibility: use __typeof__ instead of typeof in public headers
511 * warning fix: tests urcutorture for NetBSD 5
513 2012-06-01 Userspace RCU 0.7.3
514 * Fix tests: make dist lib dependency
515 * Update README for OS supported, tests dependency
516 * Add CodingStyle to tarball
517 * Add coding style document
518 * Test fix: test_perthreadlock uninitialized mutex
519 * tests: support FreeBSD short "time" args
520 * freebsd 8.2 fix: define MAP_ANONYMOUS for compatibility
522 2012-05-24 Userspace RCU 0.7.2
523 * Fix library compatibility
525 2012-05-24 Userspace RCU 0.7.1
526 * fix: uatomic_set return value compile fix for non-x86 arch.
528 2012-05-21 Userspace RCU 0.7.0
529 * Cleanup: header comments coding style
530 * Document uatomic operations
531 * Update return value of "set" operations
532 * Fix mremap wrapper for NetBSD 5
533 * Use urcu/tls-compat.h
534 * Implement urcu/tls-compat.h
535 * Add TLS detection m4 macro
536 * document concurrent data structures
537 * documentation: refer to rcu-api.txt
538 * Move API.txt to doc/rcu-api.txt, install in system doc/
539 * rculfhash: document implied memory barriers
540 * rculfhash: Ensure future-proof memory barrier semantic consistency
541 * API cleanup: use "uatomic_*" in cmm_smp_mb__ API
542 * uatomic: add memory barrier API for and/or/add/sub/inc/sub
543 * rculfhash: add runhash.sh test script
544 * rculfhash tests: add missing check
545 * rculfhash: fix: race between replace and del operations
546 * rculfhash: replace unneeded rcu_dereference by CMM_LOAD_SHARED
547 * rculfhash: use do {} while (0) for dbg_printf()
548 * rculfhash: cleanup typo
549 * rculfhash: update API comments
550 * rculfhash: update comments in implementation
551 * rculfhash tests: add long hash chains tests
552 * rculfhash tests: add uniqueness test
553 * rculfhash test: print test name
554 * rculfhash: stress requirement in documentation
555 * rculfhash: fix typo
556 * rculfhash tests: use array of callbacks to modularize
557 * rculfhash tests: modularize tests
558 * rculfhash: document ordering guarantees
559 * rculfhash: document linearizability guarantees
560 * rculfhash: update removal comment
561 * Add missing files to .gitignore
562 * Fix out-of-tree build
563 * rculfhash: check malloc NULL pointer
564 * Fix uatomic sign cast
565 * Remove unused jhash.h file
566 * Fix: use known license text, fix incorrect FSF address
567 * Fix: add missing sched.h include in rculfhash.c
568 * Allow tests to run on architectures without per-cpu call_rcu support
569 * Hash table test: FreeBSD compatibility fix
570 * tests: define _GNU_SOURCE instead of __USE_GNU
571 * RCU lock-free hash table: implement cds_lfht_is_node_deleted()
572 * Define _GNU_SOURCE to access CPU_ZERO() macro in uClibc
573 * Install ChangeLog and README into system's doc
574 * Fix AC_LANG_SOURCE usage: only takes one parameter
575 * Fix autoconf futex check
576 * configure.ac: Use AC_LANG_SOURCE for if else macros
577 * Refresh autoconf files
579 * rculfhash: add comment about hash seed randomness within test program
580 * readme: state correct GCC dependency for ARM
581 * rculfhash: remove an invocation of bit_reverse_ulong() when adding
582 * rculfhash: remove unneeded conversion
583 * rculfhash: remove unneeded clear_flag()
584 * cds_lfht_replace: add checks for old/new node hash/value match
585 * rculfhash: use node instead of iter argument for deletion
586 * rculfhash: number of logically removed nodes should not appear in API
587 * Document that flags could be represented on 2 bits
588 * Add missing REMOVAL_OWNER_FLAG comment to cds_lfht_node comment
589 * _cds_lfht_del is not used for buckets anymore, remove parameter
590 * rculfhash: Relax atomicity guarantees required by removal operation
591 * remove unneeded "return;"
592 * simplify the deletion for bucket node
593 * Remove unneeded code
594 * Cleanup DEFINE_RCU_FLAVOR()
595 * Add cds_lfht_ prefix to fls_ulong, get_count_order_ulong, get_count_order_u32
596 * Merge RCU Lock-Free Resizable Hash Table
598 2011-12-12 Userspace RCU 0.6.7
599 * Add compat file for test urcu wfs
600 * Add missing compat file for wfq test
601 * hlist.h: Add missing stddef.h include for NULL
602 * call_rcu: Add missing call_rcu_before_fork and
603 call_rcu_after_fork_parent declarations
604 * Describe autotools/libtool/automake version dependency
605 * Remove m4_ifdef for AC_PROG_LIBTOOL (deprecated)
606 * Support older autotools
607 * Apply autoupdate to configure.ac
608 * Fix build for amd64 environment (for FreeBSD 8.2)
609 * Add missing rcu_dereference_sym_bp
610 * Install test scripts in the dist tarball
612 2011-11-03 Userspace RCU 0.6.6
613 * qsbr vs call_rcu : remove exit assertion
614 * Rename likely/unlikely to caa_likely/caa_unlikely
615 * Reinsert missing test_urcu_*.c files (missing in rename)
616 * rename test_qsbr to test_urcu_qsbr
617 * urcu-pointer: fix rcu_set_pointer unset return value
618 * Enhance API.txt documentation, add to Makefile as EXTRA_DIST
620 2011-09-29 Userspace RCU 0.6.5
621 * call_rcu: Document call_rcu requirements
622 * call_rcu: fix error handling of malloc error
623 * urcu call_rcu: Use RCU read-side protection for per-cpu call_rcu data
624 * urcu,call_rcu: Cleanup call_rcu_data pointers before use in child
625 * urcu,call_rcu: avoid create call_rcu_data for child when unneed
626 * urcu,defer_rcu: Make defer_rcu encoding more compact for marker
627 * urcu_defer: Use cancellation flag instead of pthread_cancel()
628 * urcu,call_rcu: protects call_rcu_data_list when remove node
629 * Create default call rcu data upon per-cpu call-rcu teardown
630 * powerpc: use __NO_LWSYNC__ check to use appropriate lwsync/sync opcode
631 * cmm: provide lightweight smp_rmb/smp_wmb on PPC
632 * atomic: provide seq_cst semantics on powerpc
633 * avoid leaking crdp for failed path
634 * Return -EEXIST when the old cpu call_rcu_data has not been removed
635 * protect writing to per_cpu_call_rcu_data[*]
636 * wake up default call_rcu thread after we move the leftover callbacks
637 * avoid memory leak in call_rcu_data_free()
638 * urcu call_rcu: fix use after free()
639 * use get_cpu_call_rcu_data() for get_call_rcu_data()
640 * init maxcpus before use
641 * call_rcu implementation: add missing static
642 * Document QSBR interaction with mutexes
643 * urcu-pointer: implement URCU_FORCE_CAST for C++ compatibility of urcu-pointer.h
644 * urcu-qsbr: use rcu_thread_offline/rcu_thread_online instead of inlining them
645 * Pair all_cpu call_rcu create with free
646 * QSBR: add missing wakeups in synchronize_rcu code
647 * cmm: do not generate code for smp_rmb/smp_wmb on x86_64
648 * cmm: let per-arch files provide cmm_smp_* barriers
649 * Optimize caa_get_cycles() for PowerPC64
650 * lfq/lfs tests: use call_rcu
651 * list: Add cds_list_first_entry
652 * rculfstack/queue: define _LGPL_SOURCE around static header include
653 * Add __rcu annotation (unimplemented)
654 * Fix incorrect fsf address in header files
655 * wfstack: push returns prior stack emptiness state
656 * Make lf stack push return if the stack was empty
657 * Document caa_container_of
658 * urcu-bp: do not call munmap for NULL registry at exit
659 * urcu libraries can directly use the _LGPL_SOURCE wfqueue
660 * rculfstack: document "push"
661 * Add runall.sh to tarball
662 * Fix build order of liburcu-cds-common
663 * Fix missing check for SYS_membarrier in map header
664 * urcu-qsbr: avoid useless futex wakeups and burning CPU for long grace periods
665 * api: reimplement BUILD_BUG_ON in compiler.h
666 * test api cleanup: remove unused primitives
667 * put thread offline while waiting for the init flag
668 * urcu: move private definitions to .c file
669 * urcu-bp: move private definitions to .c file
670 * urcu-qsbr: move private definitions to .c file
671 * rcutorture: fix rcutorture-qsbr
672 * wfqueue: fix type-incorrect assignment
673 * Fix tests Makefile EXTRA_DIST to use api.h
674 * Fix choice of default flavour in urcu/map/urcu.h
675 * api: remove list/hlist
676 * api: remove arch-specific files
677 * api: make api_gcc.h a superset of the other headers
678 * tests api: remove atomics
679 * put thread offline while waiting for the init flag
680 * urcu: move private definitions to .c file
681 * urcu-bp: move private definitions to .c file
682 * urcu-qsbr: move private definitions to .c file
683 * rcutorture: fix rcutorture-qsbr
684 * wfqueue: fix type-incorrect assignment
685 * Use caa_ prefix for min() and max()
687 2011-07-21 Userspace RCU 0.6.4
688 * uatomic: Fix ARM build errors in uatomic.
689 * urcu tests: hold mutex across use of custom allocator.
690 * Portability fixes to support FreeBSD 8.2.
692 2011-06-27 Userspace RCU 0.6.3
693 * uatomic: Fix i386 compatibility build errors in uatomic.
695 2011-06-13 Userspace RCU 0.6.2
696 * Fix build on powerpc.
698 2011-06-13 Userspace RCU 0.6.1
699 * Add missing headers into release tarball:
700 urcu-call-rcu-impl.h and urcu-defer-impl.h
702 2011-06-10 Userspace RCU 0.6.0
703 * Added call_rcu() support, graciously contributed by Paul E. McKenney.
704 * Added urcu/cds.h and merged all "Concurrent Data Containers" (CDS)
705 into a single .so: liburcu-cds.so to have a single header/shared
706 object holding all concurrency-aware data containers. It provides
707 support for RCU lists, queues and stacks at the moment.
708 * liburcu 0.6.0 now allows linking a single application with multiple
709 flavors of RCU. This required a library API change which is
710 incompatible with older 0.5.x liburcu. The .so version number
711 is therefore bumped from 0 to 1 (e.g. liburcu.so.1).
712 * Added "atfork" handling API, documented in README. Only useful for
713 processes using fork() without following exec().
714 * Renaming the following files, keeping the old files (producing a
716 urcu/uatomic_arch.h -> urcu/uatomic.h
717 urcu/urcu-futex.h -> urcu/futex.h
718 urcu/urcu_ref.h -> urcu/ref.h
720 2011-03-04 Userspace RCU 0.5.4
721 * urcu-bp: Update fork() handling
725 extern void rcu_bp_before_fork(void);
726 extern void rcu_bp_after_fork_parent(void);
727 extern void rcu_bp_after_fork_child(void);
729 to handle fork gracefully. These disable signals and hold
730 the registry mutex across forks. (this flavor of the liburcu
731 library ("bp" for "bulletproof") is mainly used by UST, the
734 2011-03-03 Userspace RCU 0.5.3
735 * Add support for older ARM single-CPU architecturess (pre-ARMv7)
736 (thanks to Jason Wessel from WindRiver).
737 * Fix ARMv7 cmm_rmb/cmm_wmb primitives (use a dmb barrier).
738 * Remove leftover list_t type from urcu/list.h (namespace cleanup).
739 * urcu_defer: handle malloc error value.
740 * Update README file to describe urcu interaction with fork() when not
742 by an exec() system call.
744 2010-11-18 Userspace RCU 0.5.2
745 * Fix renaming error introduced in 0.5.0.
747 2010-11-18 Userspace RCU 0.5.1
748 * Fix renaming error introduced in 0.5.0. (incomplete fix)
750 2010-11-18 Userspace RCU 0.5.0
751 * Version 0.5.0 changes the API presented by memory model,
752 architecture abstraction and data structure primitives in
753 headers. The prefixes are, respectively:
754 - cmm_ : Concurrent Memory Model
755 - caa_ : Concurrent Architecture Abstraction
756 - cds_ : Concurrent Data Structures
758 2010-03-04 Userspace RCU 0.4.2
759 * Add generic uatomic ops support.
760 * Bugfix in urcu-bp. (rare garbage collection bug occurring in
761 multithreaded environment). Only affects urcu-bp users (UST).
763 2010-02-12 Userspace RCU 0.4.1
764 * s390: compilation fix.
766 2010-01-30 Userspace RCU 0.4.0
767 * API change: SIGURCU -> SIGRCU
768 * API changes: standardize on rcu_ prefix.
769 * API change: urcu_init -> rcu_init.
770 * urcu/config.h options renamed to CONFIG_RCU_HAVE_FENCE,
771 CONFIG_RCU_HAVE_FUTEX, CONFIG_RCU_SMP, CONFIG_RCU_COMPAT_ARCH.
772 ((moving from URCU -> RCU).
773 * library names changes: liburcu becomes the "default" version, using
774 sys_membarrier() when available, and using liburcu-mb as a
776 * The signal-based liburcu is renamed from liburcu to
777 liburcu-signal. People previously using the signal-based
778 "liburcu" will automatically be moved to the "default" liburcu
781 2009-11-16 Userspace RCU 0.3.1
782 * Add support for sparcv9 32-bit build.
783 * Update build system to use --host instead of --target.
785 2009-11-03 Userspace RCU 0.3.0
786 * API change for the "deferred work" interface.
788 2009-10-14 Userspace RCU 0.2.3
790 * Automated architecture detection, with i386 fallback.
791 * Detect if NR_futex is on the system, fallback on portable
793 * Add configure mode for UP-only systems.
795 2009-10-02 Userspace RCU 0.2.2
796 * Phases out rcu_publish_content() api.
797 * Adds type checking to urcu-pointer.h pointer exchange primitives.
799 2009-10-02 Userspace RCU 0.2.1
800 * small header dependency fix for rculist.h.
801 * new "liburcu-bp.so" : "Bulletproof RCU", made especially for
802 the UST userspace tracer. It's a library that sacrifices a bit
803 of read-side performance for automatically monitoring thread
804 creation/removal. See README for details.
806 2009-10-01 Userspace RCU 0.2
807 * Clarify usage of rcu_cmpxchg_pointer, rcu_xchg_pointer,
810 2009-09-29 Userspace RCU 0.1