Skip to content

Commit

Permalink
[PATCH] Improve data-dependency memory barrier example in documentation
Browse files Browse the repository at this point in the history
In the memory barrier document, improve the example of the data dependency
barrier situation by:

 (1) showing the initial values of the variables involved; and

 (2) repeating the instruction sequence description, this time with the data
     dependency barrier actually shown to make it clear what the revised
     sequence actually is.

Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
David Howells authored and Linus Torvalds committed Apr 11, 2006
1 parent dbc8700 commit c14038c
Showing 1 changed file with 15 additions and 1 deletion.
16 changes: 15 additions & 1 deletion Documentation/memory-barriers.txt
Original file line number Diff line number Diff line change
Expand Up @@ -610,6 +610,7 @@ loads. Consider the following sequence of events:

CPU 1 CPU 2
======================= =======================
{ B = 7; X = 9; Y = 8; C = &Y }
STORE A = 1
STORE B = 2
<write barrier>
Expand Down Expand Up @@ -651,7 +652,20 @@ In the above example, CPU 2 perceives that B is 7, despite the load of *C
(which would be B) coming after the the LOAD of C.

If, however, a data dependency barrier were to be placed between the load of C
and the load of *C (ie: B) on CPU 2, then the following will occur:
and the load of *C (ie: B) on CPU 2:

CPU 1 CPU 2
======================= =======================
{ B = 7; X = 9; Y = 8; C = &Y }
STORE A = 1
STORE B = 2
<write barrier>
STORE C = &B LOAD X
STORE D = 4 LOAD C (gets &B)
<data dependency barrier>
LOAD *C (reads B)

then the following will occur:

+-------+ : : : :
| | +------+ +-------+
Expand Down

0 comments on commit c14038c

Please sign in to comment.