doc: Fix memory-barrier control-dependency example
Each control-dependency example needs its barriers between the "if" condition and the body of the "if" because a control dependency is a dependency induced by a branch. This commit makes the needed adjustment. Reported-by: Yongming Shen <symingz@gmail.com> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Reviewed-by: Josh Triplett <josh@joshtriplett.org>hifive-unleashed-5.1
parent
6ae3771850
commit
45c8a36a55
|
@ -531,9 +531,10 @@ dependency barrier to make it work correctly. Consider the following bit of
|
||||||
code:
|
code:
|
||||||
|
|
||||||
q = &a;
|
q = &a;
|
||||||
if (p)
|
if (p) {
|
||||||
|
<data dependency barrier>
|
||||||
q = &b;
|
q = &b;
|
||||||
<data dependency barrier>
|
}
|
||||||
x = *q;
|
x = *q;
|
||||||
|
|
||||||
This will not have the desired effect because there is no actual data
|
This will not have the desired effect because there is no actual data
|
||||||
|
@ -542,9 +543,10 @@ attempting to predict the outcome in advance. In such a case what's actually
|
||||||
required is:
|
required is:
|
||||||
|
|
||||||
q = &a;
|
q = &a;
|
||||||
if (p)
|
if (p) {
|
||||||
|
<read barrier>
|
||||||
q = &b;
|
q = &b;
|
||||||
<read barrier>
|
}
|
||||||
x = *q;
|
x = *q;
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue