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