Commit 8149b5cb authored by SeongJae Park's avatar SeongJae Park Committed by Paul E. McKenney

Documentation/memory-barriers: Fix typos

Signed-off-by: default avatarSeongJae Park <sjpark@amazon.de>
Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
parent 9671f30e
...@@ -185,7 +185,7 @@ As a further example, consider this sequence of events: ...@@ -185,7 +185,7 @@ As a further example, consider this sequence of events:
=============== =============== =============== ===============
{ A == 1, B == 2, C == 3, P == &A, Q == &C } { A == 1, B == 2, C == 3, P == &A, Q == &C }
B = 4; Q = P; B = 4; Q = P;
P = &B D = *Q; P = &B; D = *Q;
There is an obvious data dependency here, as the value loaded into D depends on There is an obvious data dependency here, as the value loaded into D depends on
the address retrieved from P by CPU 2. At the end of the sequence, any of the the address retrieved from P by CPU 2. At the end of the sequence, any of the
...@@ -569,7 +569,7 @@ following sequence of events: ...@@ -569,7 +569,7 @@ following sequence of events:
{ A == 1, B == 2, C == 3, P == &A, Q == &C } { A == 1, B == 2, C == 3, P == &A, Q == &C }
B = 4; B = 4;
<write barrier> <write barrier>
WRITE_ONCE(P, &B) WRITE_ONCE(P, &B);
Q = READ_ONCE(P); Q = READ_ONCE(P);
D = *Q; D = *Q;
...@@ -1721,7 +1721,7 @@ of optimizations: ...@@ -1721,7 +1721,7 @@ of optimizations:
and WRITE_ONCE() are more selective: With READ_ONCE() and and WRITE_ONCE() are more selective: With READ_ONCE() and
WRITE_ONCE(), the compiler need only forget the contents of the WRITE_ONCE(), the compiler need only forget the contents of the
indicated memory locations, while with barrier() the compiler must indicated memory locations, while with barrier() the compiler must
discard the value of all memory locations that it has currented discard the value of all memory locations that it has currently
cached in any machine registers. Of course, the compiler must also cached in any machine registers. Of course, the compiler must also
respect the order in which the READ_ONCE()s and WRITE_ONCE()s occur, respect the order in which the READ_ONCE()s and WRITE_ONCE()s occur,
though the CPU of course need not do so. though the CPU of course need not do so.
...@@ -1833,7 +1833,7 @@ Aside: In the case of data dependencies, the compiler would be expected ...@@ -1833,7 +1833,7 @@ Aside: In the case of data dependencies, the compiler would be expected
to issue the loads in the correct order (eg. `a[b]` would have to load to issue the loads in the correct order (eg. `a[b]` would have to load
the value of b before loading a[b]), however there is no guarantee in the value of b before loading a[b]), however there is no guarantee in
the C specification that the compiler may not speculate the value of b the C specification that the compiler may not speculate the value of b
(eg. is equal to 1) and load a before b (eg. tmp = a[1]; if (b != 1) (eg. is equal to 1) and load a[b] before b (eg. tmp = a[1]; if (b != 1)
tmp = a[b]; ). There is also the problem of a compiler reloading b after tmp = a[b]; ). There is also the problem of a compiler reloading b after
having loaded a[b], thus having a newer copy of b than a[b]. A consensus having loaded a[b], thus having a newer copy of b than a[b]. A consensus
has not yet been reached about these problems, however the READ_ONCE() has not yet been reached about these problems, however the READ_ONCE()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment