RCU list: add rcuhlist.h, add list_replace_rcu
[urcu.git] / README
diff --git a/README b/README
index ba9c16dbdd5f6dfb8f7b96ad719eafda11b8a02f..a2ca1eb147a7318845ac0da336ff40ba5ba86f22 100644 (file)
--- a/README
+++ b/README
@@ -44,19 +44,11 @@ Usage of liburcu
 
        * #include <urcu.h>
        * Link the application with "-lurcu".
-       * This is the preferred version of the library, both in terms of speed
-         and flexibility. Requires a signal, typically SIGUSR1. Can be
-         overridden with -DSIGRCU by modifying Makefile.build.inc.
-
-Usage of liburcu-mb
-
-       * #include <urcu.h>
-       * Compile any _LGPL_SOURCE code using this library with "-DRCU_MB".
-       * Link with "-lurcu-mb".
-       * This version of the urcu library does not need to
-         reserve a signal number. RCU_MB uses full memory barriers for
-         readers. This eliminates the need for signals but results in slower
-         reads.
+       * This is the preferred version of the library, in terms of
+         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.
 
 Usage of liburcu-qsbr
 
@@ -68,6 +60,22 @@ Usage of liburcu-qsbr
          the threads are not active. It provides the fastest read-side at the
          expense of more intrusiveness in the application code.
 
+Usage of liburcu-mb
+
+       * #include <urcu.h>
+       * Compile any _LGPL_SOURCE code using this library with "-DRCU_MB".
+       * Link with "-lurcu-mb".
+       * This version of the urcu library uses memory barriers on the writer
+         and reader sides. This results in faster grace-period detection, but
+         results in slower reads.
+
+Usage of liburcu-signal
+
+       * #include <urcu-signal.h>
+       * Link the application with "-lurcu-signal".
+       * Version of the library that requires a signal, typically SIGUSR1. Can
+         be overridden with -DSIGRCU by modifying Makefile.build.inc.
+
 Usage of liburcu-bp
 
        * #include <urcu-bp.h>
@@ -138,6 +146,14 @@ Being careful with signals
        rcu_quiescent_state() calls, when threads are put offline and around
        calls to synchronize_rcu(). Even then, we do not recommend it.
 
+Interaction with mutexes
+
+       One must be careful to do not cause deadlocks due to interaction of
+       synchronize_rcu() and RCU read-side with mutexes. If synchronize_rcu()
+       is called with a mutex held, this mutex (or any mutex which has this
+       mutex in its dependency chain) should not be acquired from within a RCU
+       read-side critical section.
+
 Usage of DEBUG_RCU
 
        DEBUG_RCU is used to add internal debugging self-checks to the
This page took 0.022671 seconds and 4 git commands to generate.