- Android
- NetBSD 5
- OpenBSD
- - Darwin
(more testing needed before claiming support for these OS).
grace-period detection speed, read-side speed and flexibility.
Dynamically detects kernel support for `sys_membarrier()`. Falls back
on `urcu-mb` scheme if support is not present, which has slower
-read-side. Use the --disable-sys-membarrier-fallback configure option
+read-side. Use the `--disable-sys-membarrier-fallback` configure option
to disable the fall back, thus requiring `sys_membarrier()` to be
available. This gives a small speedup when `sys_membarrier()` is
supported by the kernel, and aborts in the library constructor if not
After, `urcu_<flavor>_synchronize_rcu()` must be called. When it
returns, the old values are not in usage anymore.
+As an alternative to `urcu_<flavor>_synchronize_rcu()`,
+it is also possible to use the urcu polling mechanism to wait for a
+grace period to elapse. This can be done by using
+`urcu_<flavor>_start_poll_synchronize_rcu()`
+to start the grace period polling, and then invoke
+`urcu_<flavor>_poll_state_synchronize_rcu()`, which returns true if
+the grace period has completed, false otherwise.
+
### Usage of `liburcu-defer`
By default the library is configured with extra debugging checks for
lock-free hash table iterator traversal disabled.
-Building liburcu with --enable-cds-lfht-iter-debug and rebuilding
+Building liburcu with `--enable-cds-lfht-iter-debug` and rebuilding
application to match the ABI change allows finding cases where the hash
table iterator is re-purposed to be used on a different hash table while
still being used to iterate on a hash table.
- An application executable is built with `_LGPL_SOURCE` defined, includes
any of the Userspace RCU 0.10 urcu flavor headers, and is built
- without the -fpic compiler option.
+ without the `-fpic` compiler option.
- The Userspace RCU 0.10 library shared objects are updated to 0.11
or 0.12 without rebuilding the application.
- Rebuild the application against Userspace RCU 0.11+.
- - Rebuild the application with -fpic.
+ - Rebuild the application with `-fpic`.
- Upgrade Userspace RCU to 0.13+ without installing 0.11 nor 0.12.