Lines Matching full:accesses

32   24. PLAIN ACCESSES AND DATA RACES
86 factors such as DMA and mixed-size accesses.) But on multiprocessor
87 systems, with multiple CPUs making concurrent accesses to shared
140 This pattern of memory accesses, where one CPU stores values to two
151 accesses by the CPUs.
276 In short, if a memory model requires certain accesses to be ordered,
278 if those accesses would form a cycle, then the memory model predicts
305 Atomic read-modify-write accesses, such as atomic_inc() or xchg(),
312 logical computations, control-flow instructions, or accesses to
342 po-loc is a sub-relation of po. It links two memory accesses when the
357 that add memory accesses, eliminate accesses, combine them, split them
361 that the compiler will not remove such accesses from the generated code
362 (unless it can prove the accesses will never be executed), it will not
364 by the C standard), and it will not introduce extraneous accesses.
367 than ordinary memory accesses. Thanks to this usage, we can be certain
370 memory accesses in the examples.
528 accesses are used. Consider this example:
550 unaligned accesses in a memory model, but the LKMM currently does not
551 attempt to do so. It requires all accesses to be properly aligned and
563 ordering must be consistent with the program order for accesses to
601 because it means that the accesses to any single memory location obey
880 Plain-coherence: This requires that plain memory accesses
914 hold if the accesses to the fixed memory location can be ordered as
970 memory accesses with X ->po Y; then the CPU must execute X before Y if
1049 Two memory accesses of the same location must always be executed in
1163 The happens-before relation (hb) links memory accesses that have to
1216 If r1 = 8 at the end then P0's accesses must have executed in program
1242 If r1 = 0 and r2 = 9 at the end then P0's accesses must have executed
1920 PLAIN ACCESSES AND DATA RACES
1923 In the LKMM, memory accesses such as READ_ONCE(x), atomic_inc(&y),
1925 "marked" accesses, because they are all annotated with special
1927 accesses such as x or y = 0 are simply called "plain" accesses.
1929 Early versions of the LKMM had nothing to say about plain accesses.
1931 by plain accesses are not concurrently read or written by any other
1933 of transformations or optimizations of code containing plain accesses,
1982 accesses. It is instead content to determine whether the code
1988 occurs when there are two memory accesses such that:
2001 In the literature, two accesses are said to "conflict" if they satisfy
2002 1 and 2 above. We'll go a little farther and say that two accesses
2012 Determining whether two accesses are race candidates is easy; you can
2016 assuming that accesses may be concurrent unless it can prove they
2019 If two memory accesses aren't concurrent then one must execute before
2020 the other. Therefore the LKMM decides two accesses aren't concurrent
2105 that when we are considering data races, some of the memory accesses
2109 accesses.
2112 allowed to apply fancy transformations to marked accesses, and
2115 plain accesses are a different story; the compiler may combine them,
2136 ... some memory accesses ...
2138 ... some other memory accesses ...
2141 corresponding to the first group of accesses will all end po-before
2142 any machine instructions corresponding to the second group of accesses
2143 -- even if some of the accesses are plain. (Of course, the CPU may
2144 then execute some of those accesses out of program order, but we
2146 there would be no such guarantee; the two groups of accesses could be
2152 smp_rmb() or smp_store_release() apply to plain accesses as well as to
2153 marked accesses.
2156 again, now using plain accesses for buf:
2180 accesses are race candidates, the LKMM can prove they are not
2191 X and Y are both marked accesses. Hence an rfe link from X to
2207 This analysis illustrates how the LKMM deals with plain accesses in
2260 The LKMM includes a second way to pre-bound plain accesses, in
2337 impossible. After all, to be race candidates the two accesses must
2372 isn't w-post-bounded by any marked accesses.
2389 two accesses don't race if R can be linked to W by an
2404 of the appropriate sort exists, the LKMM says that the accesses race.
2406 There is one more part of the LKMM related to plain accesses (although
2408 as hb are limited to marked accesses only. As a result, the
2411 accesses. Nevertheless, we do want to rule out such cycles, because
2412 they don't make sense even for plain accesses.
2436 This is the extent to which the LKMM deals with plain accesses.
2437 Perhaps it could say more (for example, plain accesses might
2460 accesses and fences, such as those corresponding to smp_load_acquire()
2489 Although we said that plain accesses are not linked by the ppo