Lines Matching +full:3 +full:p0
11 3. A SIMPLE EXAMPLE
116 P0()
132 Here the P0() function represents the interrupt handler running on one
135 Thus, P0 stores the data in buf and then sets flag. Meanwhile, P1
163 instance, P1 might run entirely before P0 begins, in which case r1 and
164 r2 will both be 0 at the end. Or P0 might run entirely before P1
168 routines run concurrently. One possibility is that P1 runs after P0's
197 Since r1 = 1, P0 must store 1 to flag before P1 loads 1 from
203 P1 must load 0 from buf before P0 stores 1 to it; otherwise r2
207 P0 stores 1 to buf before storing 1 to flag, since it executes
210 Since an instruction (in this case, P0's store to flag) cannot
228 P0()
271 W: P0 stores 1 to flag executes before
274 Z: P0 stores 1 to buf executes before
275 W: P0 stores 1 to flag.
369 that in the MP example, the compiler won't reorder P0's write event to
370 buf and P0's write event to flag, and similarly for the other shared
565 P0()
578 from the value stored by P0).
588 P0()
602 from both of P0's stores. It is possible to handle mixed-size and
667 P0()
681 P0()
697 P0()
710 If r1 = 5 (reading from P0's store) and r2 = 0 (reading from the
749 P0()
1165 P0()
1186 smp_wmb() forces P0's store to x to propagate to P1 before the store
1286 P0()
1299 If r1 = 8 at the end then P0's accesses must have executed in program
1300 order. We can deduce this from the operational model; if P0's load
1303 8. In this case there is a prop link from P0's write event to its read
1304 event, because P1's store came after P0's store in x's coherence
1305 order, and P1's store propagated to P0 before P0's load executed.
1312 P0()
1325 If r1 = 0 and r2 = 9 at the end then P0's accesses must have executed
1327 then the x = 9 store must have been propagated to P0 before the first
1329 case there is a prop link from P0's first read event to its second,
1330 because P1's store overwrote the value read by P0's first load, and
1331 P1's store propagated to P0 before P0's second load executed.
1339 P0()
1359 overwritten by P0's store to buf, the fence guarantees that the store
1390 P0()
1414 link from P0's store to its load. This is because P0's store gets
1419 guarantees that the stores to x and y both propagate to P0 before the
1420 store to z does (the second cumul-fence), and P0's load executes after the
1421 store to z has propagated to P0 (an rfe link).
1477 P0()
1495 If r0 = 0 at the end then there is a pb link from P0's load to P1's
1496 load: an fre link from P0's load to P1's store (which overwrites the
1497 value read by P0), and a strong fence between P1's store and its load.
1503 to P0's. This means that if both r1 and r2 were 0 there would be a
1547 P0()
1566 means that P0's store to x propagated to P1 before P1 called
1567 synchronize_rcu(), so P0's critical section must have started before
1569 other hand, r2 = 0 means that P0's store to y, which occurs before the
1660 3. Y is po-before Z;
1757 P0()
1775 If r2 = 0 at the end then P0's store at Y overwrites the value that
1780 If r1 = 1 at the end then P1's load at Z reads from P0's store at X,
1793 P0()
1830 P0 P1 P2
1845 This requires P0 and P2 to execute their loads and stores out of
1848 section in P0 both starts before P1's grace period does and ends
1897 3. The srcu_down_read() and srcu_up_read() primitives work
1966 P0()
1982 Assuming that P1 executes after P0 and does read the index value
2065 P0()
2090 fences, only to lock-related operations. For instance, suppose P0()
2093 P0()
2122 P0()
2149 the spin_unlock() in P0. Hence the store to x must propagate to P2
2152 propagated in either order. (On the other hand, if the code in P0 and
2185 P0()
2202 P1's store to x propagates to P0 before P0's load from x executes.
2203 But since P0's load from x is a plain access, the compiler may decide
2206 object code generated for P0 could therefore end up looking rather
2209 P0()
2218 NULL pointer, because P1's store to x might propagate to P0 after the
2238 3. at least one of them is plain,
2323 P0()
2342 means that the store to buf must propagate from P0 to P1 before Z
2404 P0()
2427 The smp_wmb() fence in P0 is both a compiler barrier and a
2522 P0()
2541 included merely for the sake of good form; typically P0 would call
2587 P0()
2591 y = 3;
2605 before the grace period in P0 does, because RCU's Grace-Period
2606 Guarantee says that otherwise P0's store to x would have propagated to
2612 This means there is an rcu-fence link from P1's "y = 2" store to P0's
2613 "y = 3" store, and consequently the first must propagate from P1 to P0
2790 P0()