./configure
make
make install
+ ldconfig
Hints: Forcing 32-bit build:
* CFLAGS="-m32 -g -O2" ./configure
therefore not compatible with liburcu on x86 32-bit (i386, i486, i586, i686).
The problem has been reported to the gcc community:
http://www.mail-archive.com/gcc-bugs@gcc.gnu.org/msg281255.html
+- gcc 3.3 cannot match the "xchg" instruction on 32-bit x86 build.
+ See: http://kerneltrap.org/node/7507
- Alpha, ia64 and ARM architectures depend on 4.x gcc with atomic builtins
support.
* Its API is currently experimental. It may change in future library
releases.
+Usage of urcu-call-rcu
+
+ * Follow instructions for either liburcu, liburcu-qsbr,
+ liburcu-mb, liburcu-signal, or liburcu-bp above.
+ The urcu-call-rcu functionality is provided for each of
+ these library modules.
+ * Provides the call_rcu() primitive to enqueue delayed callbacks
+ in a manner similar to defer_rcu(), but without ever delaying
+ for a grace period. On the other hand, call_rcu()'s best-case
+ overhead is not quite as good as that of defer_rcu().
+ * Provides call_rcu() to allow asynchronous handling of RCU
+ grace periods. A number of additional functions are provided
+ to manage the helper threads used by call_rcu(), but reasonable
+ defaults are used if these additional functions are not invoked.
+ See API.txt for more details.
+
Being careful with signals
The liburcu library uses signals internally. The signal handler is
mutex in its dependency chain) should not be acquired from within a RCU
read-side critical section.
+ This is especially important to understand in the context of the
+ QSBR flavor: a registered reader thread being "online" by
+ default should be considered as within a RCU read-side critical
+ section unless explicitly put "offline". Therefore, if
+ synchronize_rcu() is called with a mutex held, this mutex, as
+ well as any mutex which has this mutex in its dependency chain
+ should only be taken when the RCU reader thread is "offline"
+ (this can be performed by calling rcu_thread_offline()).
+
Usage of DEBUG_RCU
DEBUG_RCU is used to add internal debugging self-checks to the