Expand description
Memory orderings.
The semantics of these orderings follows the LKMM definitions and rules.
- Acquireprovides ordering between the load part of the annotated operation and all the following memory accesses, and if there is a store part, the store part has the- Relaxedordering.
- Releaseprovides ordering between all the preceding memory accesses and the store part of the annotated operation, and if there is a load part, the load part has the- Relaxedordering.
- Fullmeans “fully-ordered”, that is:- It provides ordering between all the preceding memory accesses and the annotated operation.
- It provides ordering between the annotated operation and all the following memory accesses.
- It provides ordering between all the preceding memory accesses and all the following memory accesses.
- All the orderings are the same strength as a full memory barrier (i.e. smp_mb()).
 
- Relaxedprovides no ordering except the dependency orderings. Dependency orderings are described in “DEPENDENCY RELATIONS” in- LKMM’s- explanation.
Structs§
- Acquire
- The annotation type for acquire memory ordering, for the description of acquire memory ordering, see module-level documentation.
- Full
- The annotation type for fully-ordered memory ordering, for the description fully-ordered memory ordering, see module-level documentation.
- Relaxed
- The annotation type for relaxed memory ordering, for the description of relaxed memory ordering, see module-level documentation.
- Release
- The annotation type for release memory ordering, for the description of release memory ordering, see module-level documentation.
Traits§
- AcquireOrRelaxed 
- The trait bound for operations that only support acquire or relaxed ordering.
- Ordering
- The trait bound for annotating operations that support any ordering.
- ReleaseOrRelaxed 
- The trait bound for operations that only support release or relaxed ordering.