Note relation between memory_order_consume and rcu_dereference()
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
diff --git a/defer/rcufundamental.tex b/defer/rcufundamental.tex
index 5116e0d..b8f7b9b 100644
--- a/defer/rcufundamental.tex
+++ b/defer/rcufundamental.tex
@@ -165,7 +165,15 @@
part of both the compiler and the CPU.
The \co{rcu_dereference()} primitive uses
whatever memory-barrier instructions and compiler
-directives are required for this purpose:
+directives are required for this purpose:\footnote{
+ In the Linux kernel, \co{rcu_dereference()} is implemented via
+ a volatile cast, and, on DEC Alpha, a memory barrier instruction.
+ In the C11 and C++11 standards, \co{memory_order_consume}
+ is intended to provide longer-term support for \co{rcu_dereference()},
+ but no compilers implement this natively yet.
+ (They instead strengthen \co{memory_order_consume} to
+ \co{memory_order_acquire}, thus emitting a needless memory-barrier
+ instruction on weakly ordered systems.)}
\vspace{5pt}
\begin{minipage}[t]{\columnwidth}