0001 ============
0002 LITMUS TESTS
0003 ============
0004
0005 Each subdirectory contains litmus tests that are typical to describe the
0006 semantics of respective kernel APIs.
0007 For more information about how to "run" a litmus test or how to generate
0008 a kernel test module based on a litmus test, please see
0009 tools/memory-model/README.
0010
0011
0012 atomic (/atomic derectory)
0013 --------------------------
0014
0015 Atomic-RMW+mb__after_atomic-is-stronger-than-acquire.litmus
0016 Test that an atomic RMW followed by a smp_mb__after_atomic() is
0017 stronger than a normal acquire: both the read and write parts of
0018 the RMW are ordered before the subsequential memory accesses.
0019
0020 Atomic-RMW-ops-are-atomic-WRT-atomic_set.litmus
0021 Test that atomic_set() cannot break the atomicity of atomic RMWs.
0022 NOTE: Require herd7 7.56 or later which supports "(void)expr".
0023
0024
0025 RCU (/rcu directory)
0026 --------------------
0027
0028 MP+onceassign+derefonce.litmus (under tools/memory-model/litmus-tests/)
0029 Demonstrates the use of rcu_assign_pointer() and rcu_dereference() to
0030 ensure that an RCU reader will not see pre-initialization garbage.
0031
0032 RCU+sync+read.litmus
0033 RCU+sync+free.litmus
0034 Both the above litmus tests demonstrate the RCU grace period guarantee
0035 that an RCU read-side critical section can never span a grace period.