tools/memory-model: Tie acquire loads to reads-from
authorPaul E. McKenney <paulmck@kernel.org>
Fri, 6 Nov 2020 17:58:01 +0000 (09:58 -0800)
committerPaul E. McKenney <paulmck@kernel.org>
Mon, 4 Jan 2021 22:40:49 +0000 (14:40 -0800)
This commit explicitly makes the connection between acquire loads and
the reads-from relation.  It also adds an entry for happens-before,
and refers to the corresponding section of explanation.txt.

Reported-by: Boqun Feng <boqun.feng@gmail.com>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
tools/memory-model/Documentation/glossary.txt

index 79acb75d56eaa867e38f39e984650bb97188967c..b2da6365be63c0970337d23b74dd37d524ac0a42 100644 (file)
@@ -33,10 +33,11 @@ Acquire:  With respect to a lock, acquiring that lock, for example,
        acquire loads.
 
        When an acquire load returns the value stored by a release store
-       to that same variable, then all operations preceding that store
-       happen before any operations following that load acquire.
+       to that same variable, (in other words, the acquire load "reads
+       from" the release store), then all operations preceding that
+       store "happen before" any operations following that load acquire.
 
-       See also "Relaxed" and "Release".
+       See also "Happens-Before", "Reads-From", "Relaxed", and "Release".
 
 Coherence (co):  When one CPU's store to a given variable overwrites
        either the value from another CPU's store or some later value,
@@ -119,6 +120,11 @@ Fully Ordered:  An operation such as smp_mb() that orders all of
        that orders all of its CPU's prior accesses, itself, and
        all of its CPU's subsequent accesses.
 
+Happens-Before (hb): A relation between two accesses in which LKMM
+       guarantees the first access precedes the second.  For more
+       detail, please see the "THE HAPPENS-BEFORE RELATION: hb"
+       section of explanation.txt.
+
 Marked Access:  An access to a variable that uses an special function or
        macro such as "r1 = READ_ONCE(x)" or "smp_store_release(&a, 1)".