Lines Matching refs:accesses
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.
490 between two accesses is purely syntactic if the second access doesn't
536 accesses in the two examples above will be ordered. This is another
579 accesses are used. Consider this example:
601 unaligned accesses in a memory model, but the LKMM currently does not
602 attempt to do so. It requires all accesses to be properly aligned and
614 ordering must be consistent with the program order for accesses to
652 because it means that the accesses to any single memory location obey
931 Plain-coherence: This requires that plain memory accesses
965 hold if the accesses to the fixed memory location can be ordered as
1021 memory accesses with X ->po Y; then the CPU must execute X before Y if
1100 Two memory accesses of the same location must always be executed in
1214 The happens-before relation (hb) links memory accesses that have to
1267 If r1 = 8 at the end then P0's accesses must have executed in program
1293 If r1 = 0 and r2 = 9 at the end then P0's accesses must have executed
1980 In the LKMM, memory accesses such as READ_ONCE(x), atomic_inc(&y),
1982 "marked" accesses, because they are all annotated with special
1984 accesses such as x or y = 0 are simply called "plain" accesses.
1986 Early versions of the LKMM had nothing to say about plain accesses.
1988 by plain accesses are not concurrently read or written by any other
1990 of transformations or optimizations of code containing plain accesses,
2039 accesses. It is instead content to determine whether the code
2045 occurs when there are two memory accesses such that:
2058 In the literature, two accesses are said to "conflict" if they satisfy
2059 1 and 2 above. We'll go a little farther and say that two accesses
2069 Determining whether two accesses are race candidates is easy; you can
2073 assuming that accesses may be concurrent unless it can prove they
2076 If two memory accesses aren't concurrent then one must execute before
2077 the other. Therefore the LKMM decides two accesses aren't concurrent
2162 that when we are considering data races, some of the memory accesses
2166 accesses.
2169 allowed to apply fancy transformations to marked accesses, and
2172 plain accesses are a different story; the compiler may combine them,
2193 ... some memory accesses ...
2195 ... some other memory accesses ...
2198 corresponding to the first group of accesses will all end po-before
2199 any machine instructions corresponding to the second group of accesses
2200 -- even if some of the accesses are plain. (Of course, the CPU may
2201 then execute some of those accesses out of program order, but we
2203 there would be no such guarantee; the two groups of accesses could be
2209 smp_rmb() or smp_store_release() apply to plain accesses as well as to
2210 marked accesses.
2213 again, now using plain accesses for buf:
2237 accesses are race candidates, the LKMM can prove they are not
2248 X and Y are both marked accesses. Hence an rfe link from X to
2264 This analysis illustrates how the LKMM deals with plain accesses in
2317 The LKMM includes a second way to pre-bound plain accesses, in
2394 impossible. After all, to be race candidates the two accesses must
2429 isn't w-post-bounded by any marked accesses.
2446 two accesses don't race if R can be linked to W by an
2461 of the appropriate sort exists, the LKMM says that the accesses race.
2463 There is one more part of the LKMM related to plain accesses (although
2465 as hb are limited to marked accesses only. As a result, the
2468 accesses. Nevertheless, we do want to rule out such cycles, because
2469 they don't make sense even for plain accesses.
2493 This is the extent to which the LKMM deals with plain accesses.
2494 Perhaps it could say more (for example, plain accesses might
2517 accesses and fences, such as those corresponding to smp_load_acquire()
2546 Although we said that plain accesses are not linked by the ppo