1============ 2LITMUS TESTS 3============ 4 5Each subdirectory contains litmus tests that are typical to describe the 6semantics of respective kernel APIs. 7For more information about how to "run" a litmus test or how to generate 8a kernel test module based on a litmus test, please see 9tools/memory-model/README. 10 11 12atomic (/atomic directory) 13-------------------------- 14 15Atomic-RMW+mb__after_atomic-is-stronger-than-acquire.litmus 16 Test that an atomic RMW followed by a smp_mb__after_atomic() is 17 stronger than a normal acquire: both the read and write parts of 18 the RMW are ordered before the subsequential memory accesses. 19 20Atomic-RMW-ops-are-atomic-WRT-atomic_set.litmus 21 Test that atomic_set() cannot break the atomicity of atomic RMWs. 22 NOTE: Require herd7 7.56 or later which supports "(void)expr". 23 24 25RCU (/rcu directory) 26-------------------- 27 28MP+onceassign+derefonce.litmus (under tools/memory-model/litmus-tests/) 29 Demonstrates the use of rcu_assign_pointer() and rcu_dereference() to 30 ensure that an RCU reader will not see pre-initialization garbage. 31 32RCU+sync+read.litmus 33RCU+sync+free.litmus 34 Both the above litmus tests demonstrate the RCU grace period guarantee 35 that an RCU read-side critical section can never span a grace period. 36