-
Notifications
You must be signed in to change notification settings - Fork 142
/
ChangeLog
959 lines (921 loc) · 42.7 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
# SPDX-FileCopyrightText: 2011-2023 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
#
# SPDX-License-Identifier: CC-BY-4.0
2023-02-14 Userspace RCU 0.14.0
* Fix: urcu-bp: only teardown call-rcu worker in destructor
* Fix: rculfhash: urcu_die() takes positive error value
* Fix: call_rcu: teardown default call_rcu worker on application exit
* Fix: join worker thread in call_rcu_data_free
* Docs: clarify grace period polling API
* Document grace period polling in rcu-api.md
* Implement poll rcu stress test in rcutorture
* urcu-memb,mb,signal: Implement grace period polling
* Fix: auto-resize hash table destroy deadlock
* Fix building on MSYS2
* rculfhash: Include rculfhash-internal.h from local directory
* Remove "Darwin" from "should also work on list"
* Merge branch 'adah1972-improve-md'
* Add semicolons at the end of function prototypes
* Wrap a file name in backticks
* Wrap command-line options in backticks
* Fix a wrong format
* Wrap URLs in angle brackets
* Fix Markdown issues
* Fix: Always check pthread_create for failures
* Disable signals in URCU background threads
* Fix: futex.h: include headers outside extern C
* Fix: add missing unused attribute to _rcu_dereference
* Fix: change method used by _rcu_dereference to strip type constness
* Fix: remove type constness in URCU_FORCE_CAST's C++ version
* Move extern "C" down in include/urcu/urcu-bp.h
* fix: ifdef linux specific cpu count compat
* Add unit tests for possible_cpus_array_len
* fix: sysconf(_SC_NPROCESSORS_CONF) can be less than max cpu id
* Fix: revise obsolete command in README.md
* Fix: workqueue: remove unused variable "ret"
* Fix: urcu-qsbr: futex wait: handle spurious futex wakeups
* Fix: urcu: futex wait: handle spurious futex wakeups
* Fix: urcu-wait: futex wait: handle spurious futex wakeups
* Fix: defer_rcu: futex wait: handle spurious futex wakeups
* Fix: call_rcu: futex wait: handle spurious futex wakeups
* Fix: workqueue: futex wait: handle spurious futex wakeups
* Fix: Use %lu rather than %ld to print count
* Update ABI definition files
* Bump version current and age
* alpha: allocate membarrier system call number
* Bump version to 0.14.0-pre
* Improved test framework
* rculfhash: introduce cds_lfht_node_init_deleted
* Fix: changelog: v0.13.0 was released in 2021
* cleanup: i386 arch detection
* fix: properly detect 'cmpxchg' on x86-32
* fix: use urcu-tls compat with c++ compiler
* Fix typo
* fix: remove autoconf features default value in help message
* fix: add missing pkgconfig file for memb flavour lib
* Cleanup: Tests: Remove useless pre-C99 compatibility code from tap.h
* Document C99 and C++11 requirement in README.md
* Always use '__thread' for Thread local storage except on MSVC
* Fix: powerpc32: transparent unions alter calling convention
* fix: don't use C++ thread_local on MacOs
* wfcqueue API: implement overloaded wrappers with templates
* wfcqueue: combine C++ API cds_wfcq_head_cast with overloading
* wfstack C++ API: implement overloaded wrappers with templates
* lfstack C++ API: implement overloaded wrappers with templates
* wfstack: combine C++ API cds_wfs_stack_cast with overloading
* lfstack: combine C++ API cds_lfs_stack_cast with overloading
* fix: test_build tap plan
* Test C++ build of list head init
* Fix order of initializers in CDS_LIST_HEAD_INIT
* unit tests: test wfcqueue, wfstack, lfstack empty check functions in C++
* wfcqueue: implement C++ API based on function overloading
* wfstack: implement C++ API based on function overloading
* lfstack: implement C++ API based on function overloading
* Fix tap.h: remove extra semicolon in pass/fail macros
* Add C++ build tests
* Build and run regression and unit tests as C++ programs
* Add --enable-Werror configure switch
* Add `urcu_posix_assert()` as `assert()` replacement
* Rename `urcu_assert()` to `urcu_assert_debug()`
* cleanup: spelling fixes in comments
* Make temporary variable in _rcu_dereference non-const
* (tls-ie2) Fix: x86 and s390: uatomic __hp() macro C++ support
* Fix: x86 and s390: uatomic __hp() macro clang support
* Fix: x86 and s390 uatomic: __hp() macro warning with gcc 11
2021-06-03 Userspace RCU 0.13.0
* Document known ABI issue in README.md
* Add serialized ABI definition files
* bump SONAME major to 8
* Remove all SONAME(6) ABI aliases
* .gitignore: list ignored Makefiles
* tests: Add a simple compile test for caa_get_cycles
* fix: clock_gettime on macOs
* Fix: rculist header: use parenthesis around macro parameters
* Fix: rcuhlist header: use parenthesis around macro parameters
* Fix: hlist header: use parenthesis around macro parameters
* Fix: list.h: use parenthesis around macro parameters, caa_container_of()
* Fix: hlist iteration relies on undefined behavior
* Fix: use __atomic_load() rather than atomic load explicit
* Fix: use atomic load memory_order_consume for rcu_dereference on C11/C++11
* fix: we used weak symbols not weak aliases
* fix: include 'sys/endian.h' on FreeBSD
* fix: warnings on non-Linux platforms
* fix: HAVE_SCHED_SETAFFINITY is not defined
* configure: enable extended compiler warnings
* cleanup: explicitly mark unused parameters (-Wunused-parameter)
* fix: shadowed local variable (-Wshadow)
* cleanup: all functions have declarations (-Wmissing-prototypes)
* Import libtap from babeltrace
* cleanup: add 'noreturn' attribute to '_uatomic_link_error'
* fix: add missing 'S' to AC_CHECK_PROGS
* README.md: Document supported Glibc version
* README: cleanup stale MacOS information
* Bump version to 0.13.0-pre
* configure: standardise include path
* Remove glibc < 2.4 compat code for sched_setaffinity
* configure: regroup automake conditionals
* Introduce AE_FEATURE to manage configure features
* configure: regroup library checks
* configure: regroup and expand C header and program checks
* configure: regroup and expand C compiler checks
* configure: host specific config
* tests: Move tap-driver.sh out of the autotools aux directory
* configure: Set autotools baseline
* configure: centralize version information
* fix: exclude clang from GCC version blacklists
* aarch64: blacklist gcc prior to 5.1
* Fix: configure: support Autoconf 2.70
* Don't force a target and optimization level on ARMv7
* Use DMB only on ARMv7
* Blacklist GCC 4.4.0, 4.4.1 and 4.4.2 on ARM
* Cleanup: Move ARM specific code to urcu/arch/arm.h
* fix: bump tests thread limit to 4096
* fix: reorder x86 arch detection
* fix: typo in futex syscall define check
* Compile time futex syscall detection
* Static arch and uatomic headers
* Add git-review config
* cleanup: Improve wording of CONFIG_RCU_DEBUG description
* fix: explicitly include urcu/config.h in files using CONFIG_RCU_ defines
* Fix typo in README.md
* fix: add -lurcu-common to pkg-config libs for each flavor
* call_rcu: Fix race between rcu_barrier() and call_rcu_data_free()
* Cleanup: tls-compat.h: add parentheses around expression (coding style)
* Fix: tls-compat.h exposes compiler-dependent public configuration
* Fix: tap array subscript has type char warning
2020-04-09 Userspace RCU 0.12.0
* tls-compat.h: introduce DEFINE_URCU_TLS_INIT
* Use _umtx_op for futex on FreeBSD
* Add FreeBSD, DragonFly to syscall-compat.h
* urcu-bp: perform thread registration on urcu_bp_register_thread
* Require automake >= 1.12
* cds_lfht_is_node_deleted parameter can be marked const
* Fix: provide errno as argument to urcu_die()
* Fix: rculfhash worker needs to unblock to SIGRCU
* Cleanup: test_perthreadlock_timing: handle pthread mutex errors
* Fix: SONAME bump to 6.1.0
* Cleanup: remove unused variable from configure.ac check
* Fix: urcu/futex.h: users of struct timespec should include time.h
2019-05-06 Userspace RCU 0.11.0
* Bump library version to 6:0:1
* Cleanup: update code layout to fix old gcc warning
* Fix: typo CPPLAGS in examples Makefile
* Harmonize pprint macro across projects
* Check for TLS support after CC detection
* Update macros from the autotools archive
* tap-driver.sh: flush stdout after each test result
* Update dead link in lgpl-relicensing.txt
* Add multiflavor compat identifiers
* Cleanup: missing sign compare fixes
* Cleanup: enable signed/unsigned compare compiler warning
* Cleanup: compiler warning on 32-bit architectures
* config.h.in: rename CONFIG_RCU_MULTIFLAVOR to CONFIG_RCU_HAVE_MULTIFLAVOR
* rculfhash: implement iterator debugging config option
* Fix: examples silent rules on Solaris
* Add missing fall through annotations
* Fix: symbol aliases with TLS compat
* Port: no symbols aliases on MacOS
* Add -Wextra to CFLAGS
* Add silent mode to examples Makefiles
* doc: update examples to API changes
* test multiflavor single compile unit
* Update README following API changes
* Use new header locations for includes from urcu code
* Update call-rcu.h and defer.h comments and include guards
* rculfqueue.h: do not include urcu-call-rcu.h
* rculfhash: support use with multiple flavors per compile unit
* rculfhash: do not include urcu-call-rcu.h from public API
* Refactor liburcu to support many flavors per compile unit
* Fix: only wait if work queue is empty in real-time mode
* Fix: don't wait after completion of a work queue job batch
* Fix: don't wait after completion of job batch if work queue is empty
* Fix: workqueue: struct urcu_work vs rcu_head mixup
* Cleanup: workqueue: update comments referring to call-rcu
* Fix: mixup between URCU_WORKQUEUE_RT and URCU_CALL_RCU_RT
* test_rwlock: Add per-thread count to verbose output
* Add *.exe to gitignore for Cygwin
* Fix: pthread_rwlock initialization on Cygwin
* Fix: compat_futex_noasync on Cygwin
* wfcqueue: allow defining CDS_WFCQ_WAIT_SLEEP to override `poll'
* Update documentation for call_rcu before/after fork
* Add support for the RISC-V architecture
* Tests: Add tap-driver.sh for automake < 1.12
* Tests: Replace prove by autotools tap runner
* liburcu-bp: Use membarrier private expedited when available
* liburcu: Use membarrier private expedited when available
* rculfhash: improve error handling of mmap backend
* Fix: don't use overlapping mmap mappings on Cygwin
* Tests fix: errors in shell scripts
* Revert "Use initial-exec tls model"
* Use initial-exec tls model
* Fix: don't use membarrier SHARED syscall command in liburcu-bp
* Tests fix: add missing Cygwin thread id
* Fix: assignment from incompatible pointer type warnings
* Tests fix: unused variable warnings
* Fix: add missing m68k headers to dist
* Bump version to 0.11-pre
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.