Contents
Part I Running tests with
litmus7
1 A tour of
litmus7
1.1 A simple run
1.2 Cross compilation
1.3 Running several tests at once
2 Controlling test parameters
2.1 Architecture of tests
2.2 Affinity
2.2.1 Introduction to affinity
2.2.2 Study of affinity
2.2.3 Advanced control
2.2.4 Custom control
2.3 Controlling executable files
3 Advanced control of test parameters
3.1 Timebase synchronisation mode
3.2 Advanced prefetch control
3.2.1 Custom prefetch
3.2.2 Prefetch metadata
3.2.3 “Static” prefetch control
4 Usage of
litmus7
5 Running kernel tests with
klitmus7
5.1 Compiling and running a kernel litmus test
5.2 Runtime control of kernel modules
5.3 Usage of
klitmus7
6 Non-standard modes
6.1 Mode
presi
6.2 Mode
kvm
Part II Generating tests
7 Preamble
7.1 Relaxation of Sequential Consistency
7.2 Introduction to candidate relaxations
7.3 More candidate relaxations
7.4 Summary of simple candidate relaxations
7.4.1 Communication candidate relaxations
7.4.2 Program order candidate relaxations
7.4.3 Fence candidate relaxations
7.5 Annotations
8 Testing candidate relaxations with
diy7
8.1 Principle
8.2 Testing x86
9 Additional relaxations
9.1 Intra-processor dependencies
9.2 Composite relaxations and cumulativity
9.3 Detour candidate relaxations
10 Test variations with
diycross7
11 Identifying coherence orders with observers
11.1 Simple observers
11.2 More observers
11.2.1 Fences and loops in observers
11.2.2 Local observers
11.2.3 Performance of observers
11.3 Three stores or more
12 Command usage
12.1 A note on test names
12.1.1 Family names
12.1.2 Descriptive names for variants
12.2 Common options
12.3 Usage of
diyone7
12.4 Usage of
diycross7
12.5 Usage of
diy7
12.6 Usage of
readRelax7
13 Additional tools: extracting cycles and classification
13.1 Usage of
mcycle7
13.2 Usageof
classify7
13.3 Usage of
norm7
Part III Simulating memory models with
herd7
14 Writing simple models
14.1 Sequential consistency
14.2 Total Store Order (TSO)
14.3 Sequential consistency, total order definition
14.4 Computing coherence orders
15 Producing pictures of executions
15.1 Graph modes
15.2 Showing forbidden executions
16 Model definitions
16.1 Overview
16.2 Identifiers
16.3 Expressions
16.4 Instructions
16.5 Models
16.6 Primitives
16.7 Library
17 Usage of
herd7
17.1 Arguments
17.2 Options
17.3 Configuration files
17.4 File searching
Part IV Some examples
18 Running several tests at once, changing critical parameters
19 Cross compiling, affinity experiment
20 Cross running, testing low-end devices