Map symbols to allow multiple RCU flavors to be used in one binary
[urcu.git] / README
diff --git a/README b/README
index 10406f79f9b33b797e794ca463d97a5c7cf0378f..56e98d768e960ede0a80245a8a1a725218de33d4 100644 (file)
--- a/README
+++ b/README
@@ -190,3 +190,21 @@ SMP support
                ./configure --disable-smp-support
 
        theoretically yielding slightly better performance.
+
+Interaction with fork()
+
+       Special care must be taken for applications performing fork() without
+       any following exec(). This is caused by the fact that Linux only clones
+       the thread calling fork(), and thus never replicates any of the other
+       parent thread into the child process. Most liburcu implementations
+       require that all registrations (as reader, defer_rcu and call_rcu
+       threads) should be released before a fork() is performed, except for the
+       rather common scenario where fork() is immediately followed by exec() in
+       the child process. The only implementation not subject to that rule is
+       liburcu-bp, which is designed to handle fork() by calling
+       rcu_bp_before_fork, rcu_bp_after_fork_parent and
+       rcu_bp_after_fork_child.
+
+       Applications that use call_rcu() are required to invoke
+       call_rcu_after_fork_child() from the child process after a
+       successful fork() system call that is not followed by exec().
This page took 0.024609 seconds and 4 git commands to generate.