Lines Matching refs:operations
2 operations provided by the Linux-kernel memory model (LKMM).
9 operations in decreasing order of strength:
12 all of the CPU's prior operations against some or all of its
13 subsequent operations.
15 2. Ordered memory accesses. These operations order themselves
23 some of these "unordered" operations provide limited ordering
62 o Value-returning RMW atomic operations whose names do not end in
82 Second, some RMW atomic operations provide full ordering. These
83 operations include value-returning RMW atomic operations (that is, those
86 cmpxchg(), and xchg(). Note that conditional RMW atomic operations such
88 When RMW atomic operations provide full ordering, they partition the
100 In contrast, non-value-returning RMW atomic operations (that is, those
102 value-returning RMW atomic operations whose names end in _relaxed.
106 operations such as atomic_read() do not guarantee full ordering, and
107 are covered in the later section on unordered operations.
109 Value-returning RMW atomic operations whose names end in _acquire or
129 As noted in the previous section, non-value-returning RMW operations
247 a. Release operations.
249 b. Acquire operations.
261 Release operations include smp_store_release(), atomic_set_release(),
262 rcu_assign_pointer(), and value-returning RMW operations whose names
263 end in _release. These operations order their own store against all
264 of the CPU's prior memory accesses. Release operations often provide
292 There is a wide variety of release operations:
294 o Store operations, including not only the aforementioned
305 o Value-returning RMW operations whose names end in _release,
309 memory-load portion. Note also that conditional operations such
313 As mentioned earlier, release operations are often paired with acquire
314 operations, which are the subject of the next section.
320 Acquire operations include smp_load_acquire(), atomic_read_acquire(),
321 and value-returning RMW operations whose names end in _acquire. These
322 operations order their own load against all of the CPU's subsequent
323 memory accesses. Acquire operations often provide improved performance
336 There are a couple of categories of acquire operations:
338 o Load operations, including not only the aforementioned
342 o Value-returning RMW operations whose names end in _acquire,
346 memory-store portion. Note also that conditional operations
350 Symmetry being what it is, acquire operations are often paired with the
351 release operations covered earlier. For example, consider the following
378 Compared to locking primitives and RMW atomic operations, markers
443 a. Unordered marked operations.
451 Unordered operations to different variables are just that, unordered.
452 However, if a group of CPUs apply these operations to a single variable,
457 These operations come in three categories:
465 operations, unless these operations are to the same variable.
473 operations, unless these operations are to the same variable.
475 o Unordered RMW atomic operations. These are non-value-returning
476 RMW atomic operations whose names do not end in _acquire or
477 _release, and also value-returning RMW operations whose names
479 and atomic64_fetch_xor_relaxed(). These operations do carry
481 concurrent atomic_inc() operations applied to a given variable
483 However, many CPUs will happily reorder these operations with
484 each other or with other unordered operations.
486 This category of operations can be efficiently ordered using
490 In short, these operations can be freely reordered unless they are all
492 the operations called out earlier in this document.
500 C11 atomic variables. These operations provide no ordering guarantees,