1 2013-01-09 Userspace RCU 0.7.6
2 * Discourage use of pthread_atfork() for call_rcu handlers
3 * Fix call_rcu fork handling
5 * Fix TLS detection: test with linker, add --disable-compiler-tls
6 * Cleanup: cast pthread_self() return value to unsigned long
7 * Fallback mechanism not working on platform where TLS is unsupported
9 2012-10-12 Userspace RCU 0.7.5
10 * 19cf3ae Fix: call_rcu list corruption on teardown
11 * Ensure that read-side functions meet 10-line LGPL criterion
12 * tls-compat.h: document sigaltstack(2) limitation
13 * urcu: add notice to URCU_TLS() for it is not strictly async-signal-safe
14 * Document sigaltstack(2) limitation
15 * Documentation: update LICENSE file
17 2012-08-27 Userspace RCU 0.7.4
18 * rculfhash API documentation: document destroy RCU read-lock constraint
19 * Fix: rculfhash should be offline while waiting for resize to complete
20 * Add missing entry to gitignore
21 * urcu: move busy-wait code and name it ___cds_wfq_node_sync_next()
22 * urcu: fix compat_futex_noasync()
23 * urcu: add hint to DEFINE_URCU_TLS() for compound types
24 * Fix: CAA_BUILD_BUG_ON should refer to CAA_BUILD_BUG_ON_ZERO
26 * Compatibility: remove bash-ismsm from test scripts
27 * Fix inappropriate lib behavior: don't call exit()
28 * Fix: re-enable compatibility with autoconf < 2.64
29 * Fix c99 compatibility: use __asm__ and __volatile__ in public headers
30 * Fix c99 compatibility: use __typeof__ instead of typeof in public headers
31 * warning fix: tests urcutorture for NetBSD 5
33 2012-06-01 Userspace RCU 0.7.3
34 * Fix tests: make dist lib dependency
35 * Update README for OS supported, tests dependency
36 * Add CodingStyle to tarball
37 * Add coding style document
38 * Test fix: test_perthreadlock uninitialized mutex
39 * tests: support FreeBSD short "time" args
40 * freebsd 8.2 fix: define MAP_ANONYMOUS for compatibility
42 2012-05-24 Userspace RCU 0.7.2
43 * Fix library compatibility
45 2012-05-24 Userspace RCU 0.7.1
46 * fix: uatomic_set return value compile fix for non-x86 arch.
48 2012-05-21 Userspace RCU 0.7.0
49 * Cleanup: header comments coding style
50 * Document uatomic operations
51 * Update return value of "set" operations
52 * Fix mremap wrapper for NetBSD 5
53 * Use urcu/tls-compat.h
54 * Implement urcu/tls-compat.h
55 * Add TLS detection m4 macro
56 * document concurrent data structures
57 * documentation: refer to rcu-api.txt
58 * Move API.txt to doc/rcu-api.txt, install in system doc/
59 * rculfhash: document implied memory barriers
60 * rculfhash: Ensure future-proof memory barrier semantic consistency
61 * API cleanup: use "uatomic_*" in cmm_smp_mb__ API
62 * uatomic: add memory barrier API for and/or/add/sub/inc/sub
63 * rculfhash: add runhash.sh test script
64 * rculfhash tests: add missing check
65 * rculfhash: fix: race between replace and del operations
66 * rculfhash: replace unneeded rcu_dereference by CMM_LOAD_SHARED
67 * rculfhash: use do {} while (0) for dbg_printf()
68 * rculfhash: cleanup typo
69 * rculfhash: update API comments
70 * rculfhash: update comments in implementation
71 * rculfhash tests: add long hash chains tests
72 * rculfhash tests: add uniqueness test
73 * rculfhash test: print test name
74 * rculfhash: stress requirement in documentation
76 * rculfhash tests: use array of callbacks to modularize
77 * rculfhash tests: modularize tests
78 * rculfhash: document ordering guarantees
79 * rculfhash: document linearizability guarantees
80 * rculfhash: update removal comment
81 * Add missing files to .gitignore
82 * Fix out-of-tree build
83 * rculfhash: check malloc NULL pointer
84 * Fix uatomic sign cast
85 * Remove unused jhash.h file
86 * Fix: use known license text, fix incorrect FSF address
87 * Fix: add missing sched.h include in rculfhash.c
88 * Allow tests to run on architectures without per-cpu call_rcu support
89 * Hash table test: FreeBSD compatibility fix
90 * tests: define _GNU_SOURCE instead of __USE_GNU
91 * RCU lock-free hash table: implement cds_lfht_is_node_deleted()
92 * Define _GNU_SOURCE to access CPU_ZERO() macro in uClibc
93 * Install ChangeLog and README into system's doc
94 * Fix AC_LANG_SOURCE usage: only takes one parameter
95 * Fix autoconf futex check
96 * configure.ac: Use AC_LANG_SOURCE for if else macros
97 * Refresh autoconf files
99 * rculfhash: add comment about hash seed randomness within test program
100 * readme: state correct GCC dependency for ARM
101 * rculfhash: remove an invocation of bit_reverse_ulong() when adding
102 * rculfhash: remove unneeded conversion
103 * rculfhash: remove unneeded clear_flag()
104 * cds_lfht_replace: add checks for old/new node hash/value match
105 * rculfhash: use node instead of iter argument for deletion
106 * rculfhash: number of logically removed nodes should not appear in API
107 * Document that flags could be represented on 2 bits
108 * Add missing REMOVAL_OWNER_FLAG comment to cds_lfht_node comment
109 * _cds_lfht_del is not used for buckets anymore, remove parameter
110 * rculfhash: Relax atomicity guarantees required by removal operation
111 * remove unneeded "return;"
112 * simplify the deletion for bucket node
113 * Remove unneeded code
114 * Cleanup DEFINE_RCU_FLAVOR()
115 * Add cds_lfht_ prefix to fls_ulong, get_count_order_ulong, get_count_order_u32
116 * Merge RCU Lock-Free Resizable Hash Table
118 2011-12-12 Userspace RCU 0.6.7
119 * Add compat file for test urcu wfs
120 * Add missing compat file for wfq test
121 * hlist.h: Add missing stddef.h include for NULL
122 * call_rcu: Add missing call_rcu_before_fork and
123 call_rcu_after_fork_parent declarations
124 * Describe autotools/libtool/automake version dependency
125 * Remove m4_ifdef for AC_PROG_LIBTOOL (deprecated)
126 * Support older autotools
127 * Apply autoupdate to configure.ac
128 * Fix build for amd64 environment (for FreeBSD 8.2)
129 * Add missing rcu_dereference_sym_bp
130 * Install test scripts in the dist tarball
132 2011-11-03 Userspace RCU 0.6.6
133 * qsbr vs call_rcu : remove exit assertion
134 * Rename likely/unlikely to caa_likely/caa_unlikely
135 * Reinsert missing test_urcu_*.c files (missing in rename)
136 * rename test_qsbr to test_urcu_qsbr
137 * urcu-pointer: fix rcu_set_pointer unset return value
138 * Enhance API.txt documentation, add to Makefile as EXTRA_DIST
140 2011-09-29 Userspace RCU 0.6.5
141 * call_rcu: Document call_rcu requirements
142 * call_rcu: fix error handling of malloc error
143 * urcu call_rcu: Use RCU read-side protection for per-cpu call_rcu data
144 * urcu,call_rcu: Cleanup call_rcu_data pointers before use in child
145 * urcu,call_rcu: avoid create call_rcu_data for child when unneed
146 * urcu,defer_rcu: Make defer_rcu encoding more compact for marker
147 * urcu_defer: Use cancellation flag instead of pthread_cancel()
148 * urcu,call_rcu: protects call_rcu_data_list when remove node
149 * Create default call rcu data upon per-cpu call-rcu teardown
150 * powerpc: use __NO_LWSYNC__ check to use appropriate lwsync/sync opcode
151 * cmm: provide lightweight smp_rmb/smp_wmb on PPC
152 * atomic: provide seq_cst semantics on powerpc
153 * avoid leaking crdp for failed path
154 * Return -EEXIST when the old cpu call_rcu_data has not been removed
155 * protect writing to per_cpu_call_rcu_data[*]
156 * wake up default call_rcu thread after we move the leftover callbacks
157 * avoid memory leak in call_rcu_data_free()
158 * urcu call_rcu: fix use after free()
159 * use get_cpu_call_rcu_data() for get_call_rcu_data()
160 * init maxcpus before use
161 * call_rcu implementation: add missing static
162 * Document QSBR interaction with mutexes
163 * urcu-pointer: implement URCU_FORCE_CAST for C++ compatibility of urcu-pointer.h
164 * urcu-qsbr: use rcu_thread_offline/rcu_thread_online instead of inlining them
165 * Pair all_cpu call_rcu create with free
166 * QSBR: add missing wakeups in synchronize_rcu code
167 * cmm: do not generate code for smp_rmb/smp_wmb on x86_64
168 * cmm: let per-arch files provide cmm_smp_* barriers
169 * Optimize caa_get_cycles() for PowerPC64
170 * lfq/lfs tests: use call_rcu
171 * list: Add cds_list_first_entry
172 * rculfstack/queue: define _LGPL_SOURCE around static header include
173 * Add __rcu annotation (unimplemented)
174 * Fix incorrect fsf address in header files
175 * wfstack: push returns prior stack emptiness state
176 * Make lf stack push return if the stack was empty
177 * Document caa_container_of
178 * urcu-bp: do not call munmap for NULL registry at exit
179 * urcu libraries can directly use the _LGPL_SOURCE wfqueue
180 * rculfstack: document "push"
181 * Add runall.sh to tarball
182 * Fix build order of liburcu-cds-common
183 * Fix missing check for SYS_membarrier in map header
184 * urcu-qsbr: avoid useless futex wakeups and burning CPU for long grace periods
185 * api: reimplement BUILD_BUG_ON in compiler.h
186 * test api cleanup: remove unused primitives
187 * put thread offline while waiting for the init flag
188 * urcu: move private definitions to .c file
189 * urcu-bp: move private definitions to .c file
190 * urcu-qsbr: move private definitions to .c file
191 * rcutorture: fix rcutorture-qsbr
192 * wfqueue: fix type-incorrect assignment
193 * Fix tests Makefile EXTRA_DIST to use api.h
194 * Fix choice of default flavour in urcu/map/urcu.h
195 * api: remove list/hlist
196 * api: remove arch-specific files
197 * api: make api_gcc.h a superset of the other headers
198 * tests api: remove atomics
199 * put thread offline while waiting for the init flag
200 * urcu: move private definitions to .c file
201 * urcu-bp: move private definitions to .c file
202 * urcu-qsbr: move private definitions to .c file
203 * rcutorture: fix rcutorture-qsbr
204 * wfqueue: fix type-incorrect assignment
205 * Use caa_ prefix for min() and max()
207 2011-07-21 Userspace RCU 0.6.4
208 * uatomic: Fix ARM build errors in uatomic.
209 * urcu tests: hold mutex across use of custom allocator.
210 * Portability fixes to support FreeBSD 8.2.
212 2011-06-27 Userspace RCU 0.6.3
213 * uatomic: Fix i386 compatibility build errors in uatomic.
215 2011-06-13 Userspace RCU 0.6.2
216 * Fix build on powerpc.
218 2011-06-13 Userspace RCU 0.6.1
219 * Add missing headers into release tarball:
220 urcu-call-rcu-impl.h and urcu-defer-impl.h
222 2011-06-10 Userspace RCU 0.6.0
223 * Added call_rcu() support, graciously contributed by Paul E. McKenney.
224 * Added urcu/cds.h and merged all "Concurrent Data Containers" (CDS)
225 into a single .so: liburcu-cds.so to have a single header/shared
226 object holding all concurrency-aware data containers. It provides
227 support for RCU lists, queues and stacks at the moment.
228 * liburcu 0.6.0 now allows linking a single application with multiple
229 flavors of RCU. This required a library API change which is
230 incompatible with older 0.5.x liburcu. The .so version number
231 is therefore bumped from 0 to 1 (e.g. liburcu.so.1).
232 * Added "atfork" handling API, documented in README. Only useful for
233 processes using fork() without following exec().
234 * Renaming the following files, keeping the old files (producing a
236 urcu/uatomic_arch.h -> urcu/uatomic.h
237 urcu/urcu-futex.h -> urcu/futex.h
238 urcu/urcu_ref.h -> urcu/ref.h
240 2011-03-04 Userspace RCU 0.5.4
241 * urcu-bp: Update fork() handling
245 extern void rcu_bp_before_fork(void);
246 extern void rcu_bp_after_fork_parent(void);
247 extern void rcu_bp_after_fork_child(void);
249 to handle fork gracefully. These disable signals and hold
250 the registry mutex across forks. (this flavor of the liburcu
251 library ("bp" for "bulletproof") is mainly used by UST, the
254 2011-03-03 Userspace RCU 0.5.3
255 * Add support for older ARM single-CPU architecturess (pre-ARMv7)
256 (thanks to Jason Wessel from WindRiver).
257 * Fix ARMv7 cmm_rmb/cmm_wmb primitives (use a dmb barrier).
258 * Remove leftover list_t type from urcu/list.h (namespace cleanup).
259 * urcu_defer: handle malloc error value.
260 * Update README file to describe urcu interaction with fork() when not
262 by an exec() system call.
264 2010-11-18 Userspace RCU 0.5.2
265 * Fix renaming error introduced in 0.5.0.
267 2010-11-18 Userspace RCU 0.5.1
268 * Fix renaming error introduced in 0.5.0. (incomplete fix)
270 2010-11-18 Userspace RCU 0.5.0
271 * Version 0.5.0 changes the API presented by memory model,
272 architecture abstraction and data structure primitives in
273 headers. The prefixes are, respectively:
274 - cmm_ : Concurrent Memory Model
275 - caa_ : Concurrent Architecture Abstraction
276 - cds_ : Concurrent Data Structures
278 2010-03-04 Userspace RCU 0.4.2
279 * Add generic uatomic ops support.
280 * Bugfix in urcu-bp. (rare garbage collection bug occurring in
281 multithreaded environment). Only affects urcu-bp users (UST).
283 2010-02-12 Userspace RCU 0.4.1
284 * s390: compilation fix.
286 2010-01-30 Userspace RCU 0.4.0
287 * API change: SIGURCU -> SIGRCU
288 * API changes: standardize on rcu_ prefix.
289 * API change: urcu_init -> rcu_init.
290 * urcu/config.h options renamed to CONFIG_RCU_HAVE_FENCE,
291 CONFIG_RCU_HAVE_FUTEX, CONFIG_RCU_SMP, CONFIG_RCU_COMPAT_ARCH.
292 ((moving from URCU -> RCU).
293 * library names changes: liburcu becomes the "default" version, using
294 sys_membarrier() when available, and using liburcu-mb as a
296 * The signal-based liburcu is renamed from liburcu to
297 liburcu-signal. People previously using the signal-based
298 "liburcu" will automatically be moved to the "default" liburcu
301 2009-11-16 Userspace RCU 0.3.1
302 * Add support for sparcv9 32-bit build.
303 * Update build system to use --host instead of --target.
305 2009-11-03 Userspace RCU 0.3.0
306 * API change for the "deferred work" interface.
308 2009-10-14 Userspace RCU 0.2.3
310 * Automated architecture detection, with i386 fallback.
311 * Detect if NR_futex is on the system, fallback on portable
313 * Add configure mode for UP-only systems.
315 2009-10-02 Userspace RCU 0.2.2
316 * Phases out rcu_publish_content() api.
317 * Adds type checking to urcu-pointer.h pointer exchange primitives.
319 2009-10-02 Userspace RCU 0.2.1
320 * small header dependency fix for rculist.h.
321 * new "liburcu-bp.so" : "Bulletproof RCU", made especially for
322 the UST userspace tracer. It's a library that sacrifices a bit
323 of read-side performance for automatically monitoring thread
324 creation/removal. See README for details.
326 2009-10-01 Userspace RCU 0.2
327 * Clarify usage of rcu_cmpxchg_pointer, rcu_xchg_pointer,
330 2009-09-29 Userspace RCU 0.1