162306a36Sopenharmony_ci============ 262306a36Sopenharmony_ciLITMUS TESTS 362306a36Sopenharmony_ci============ 462306a36Sopenharmony_ci 562306a36Sopenharmony_ciEach subdirectory contains litmus tests that are typical to describe the 662306a36Sopenharmony_cisemantics of respective kernel APIs. 762306a36Sopenharmony_ciFor more information about how to "run" a litmus test or how to generate 862306a36Sopenharmony_cia kernel test module based on a litmus test, please see 962306a36Sopenharmony_citools/memory-model/README. 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ciatomic (/atomic directory) 1362306a36Sopenharmony_ci-------------------------- 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ciAtomic-RMW+mb__after_atomic-is-stronger-than-acquire.litmus 1662306a36Sopenharmony_ci Test that an atomic RMW followed by a smp_mb__after_atomic() is 1762306a36Sopenharmony_ci stronger than a normal acquire: both the read and write parts of 1862306a36Sopenharmony_ci the RMW are ordered before the subsequential memory accesses. 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ciAtomic-RMW-ops-are-atomic-WRT-atomic_set.litmus 2162306a36Sopenharmony_ci Test that atomic_set() cannot break the atomicity of atomic RMWs. 2262306a36Sopenharmony_ci NOTE: Require herd7 7.56 or later which supports "(void)expr". 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_ciRCU (/rcu directory) 2662306a36Sopenharmony_ci-------------------- 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ciMP+onceassign+derefonce.litmus (under tools/memory-model/litmus-tests/) 2962306a36Sopenharmony_ci Demonstrates the use of rcu_assign_pointer() and rcu_dereference() to 3062306a36Sopenharmony_ci ensure that an RCU reader will not see pre-initialization garbage. 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_ciRCU+sync+read.litmus 3362306a36Sopenharmony_ciRCU+sync+free.litmus 3462306a36Sopenharmony_ci Both the above litmus tests demonstrate the RCU grace period guarantee 3562306a36Sopenharmony_ci that an RCU read-side critical section can never span a grace period. 36