urcu qsbr: add DEBUG_RCU self check
[urcu.git] / README
diff --git a/README b/README
index d71bbe7597e1fb893cd13742cbb16f6e7ef61e1c..f9af1eb483d83d3cee27625efc0eaa5c48dbbe3e 100644 (file)
--- a/README
+++ b/README
@@ -26,18 +26,37 @@ Reading
 Writing
 
        rcu_assign_pointer() and rcu_xchg_pointer() may be called anywhere.
-       After, synchronize_rcu() must be called. When it returns, the old values
-       are not in usage anymore.
+       After, synchronize_rcu() must be called. When it returns, the old
+       values are not in usage anymore.
 
+Being careful with signals
 
-Usage of DEBUG_FULL_MB
+       The library uses signals internally. The signal handler is
+       registered with the SA_RESTART flag. However, these signals may cause
+       some non-restartable system calls to fail with errno = EINTR. Care
+       should be taken to restart system calls manually if they fail with this
+       error. A list of non-restartable system calls may be found in
+       signal(7). To ensure the Userspace RCU library does not use signals,
+       define CONFIG_URCU_AVOID_SIGNALS at compile-time.
 
-       DEBUG_FULL_MB uses full SMP barriers for readers. This eliminates the
-       need for signals but results in slower reads.
+       Read-side critical sections can sit in a signal handler. Be careful,
+       however, to disable these signals between thread creation and calls to
+       rcu_register_thread(), because a signal handler nesting on an
+       unregistered thread would not be allowed to call rcu_read_lock().
 
+Usage of CONFIG_URCU_AVOID_SIGNALS
+
+       CONFIG_URCU_AVOID_SIGNALS uses full SMP barriers for readers. This
+       eliminates the need for signals but results in slower reads.
+
+Usage of DEBUG_RCU
+
+       DEBUG_RCU is used to add internal debugging self-checks to the
+       RCU library. This define adds a performance penality when enabled.
+       Can be enabled by uncommenting the corresponding line in
+       Makefile.build.inc.
 
 Usage of DEBUG_YIELD
 
        DEBUG_YIELD is used to add random delays in the code for testing
        purposes.
-
This page took 0.02334 seconds and 4 git commands to generate.