Restrict supported arch ot P6+ on Intel x86 32.
[urcu.git] / README
diff --git a/README b/README
index 7753c8f957dfbf6acd9244b2fa2d9759879bc3f3..f9437dba2857856b726cc4539b6deeafaf09f668 100644 (file)
--- a/README
+++ b/README
@@ -4,9 +4,25 @@ by Mathieu Desnoyers and Paul E. McKenney
 BUILDING
 --------
 
 BUILDING
 --------
 
+       ./bootstrap (skip if using tarball)
+       ./configure
        make
        make install
        make
        make install
-       
+
+       Note:   Forcing 32-bit build:
+               * CFLAGS=-m32 ./configure
+
+               Forcing 64-bit build:
+               * CFLAGS=-m64 ./configure
+
+ARCHITECTURES SUPPORTED
+-----------------------
+
+Currently, x86 (only P6+), x86 64, PowerPC 32/64 and S390 are
+supported. The current use of sys_futex() makes it Linux-dependent, although
+this portability limitation might go away in a near future by using the pthread
+cond vars. Also, the restriction against i386, i486 and Pentium might go away if
+we integrate some of glibc runtime CPU-detection tests.
 
 QUICK START GUIDE
 -----------------
 
 QUICK START GUIDE
 -----------------
@@ -31,7 +47,7 @@ Usage of liburcu
 Usage of liburcu-mb
 
        * #include <urcu.h>
 Usage of liburcu-mb
 
        * #include <urcu.h>
-       * Compile code with "-DURCU_MB"
+       * Compile any _LGPL_SOURCE code using this library with "-DURCU_MB".
        * Link with "-lurcu-mb".
        * This version of the urcu library does not need to
          reserve a signal number. URCU_MB uses full memory barriers for
        * Link with "-lurcu-mb".
        * This version of the urcu library does not need to
          reserve a signal number. URCU_MB uses full memory barriers for
@@ -48,11 +64,24 @@ 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.
 
          the threads are not active. It provides the fastest read-side at the
          expense of more intrusiveness in the application code.
 
+Usage of liburcu-bp
+
+       * #include <urcu-bp.h>
+       * Link with "-lurcu-bp".
+       * The BP library flavor stands for "bulletproof". It is specifically
+         designed to help tracing library to hook on applications without
+         requiring to modify these applications. urcu_init(),
+         rcu_register_thread() and rcu_unregister_thread() all become nops.
+         The state is dealt with by the library internally at the expense of
+         read-side and write-side performance.
+
 Initialization
 
        Each thread that has reader critical sections (that uses
        rcu_read_lock()/rcu_read_unlock() must first register to the URCU
 Initialization
 
        Each thread that has reader critical sections (that uses
        rcu_read_lock()/rcu_read_unlock() must first register to the URCU
-       library. This is done by calling rcu_register_thread().
+       library. This is done by calling rcu_register_thread(). Unregistration
+       must be performed before exiting the thread by using
+       rcu_unregister_thread().
 
 Reading
 
 
 Reading
 
@@ -66,6 +95,15 @@ Writing
        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.
 
+Usage of liburcu-defer
+
+       * #include <urcu-defer.h>
+       * Link with "-lurcu-defer"
+       * Provides call_rcu() primitive to enqueue delayed callbacks. Queued
+         callbacks are executed in batch periodically after a grace period.
+         Do _not_ use call_rcu() within a read-side critical section, because
+         it may call synchronize_rcu() if the thread queue is full.
+
 Being careful with signals
 
        The liburcu library uses signals internally. The signal handler is
 Being careful with signals
 
        The liburcu library uses signals internally. The signal handler is
This page took 0.023212 seconds and 4 git commands to generate.