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
Part II Generating tests
6 Preamble
6.1 Relaxation of Sequential Consistency
6.2 Introduction to candidate relaxations
6.3 More candidate relaxations
6.4 Summary of simple candidate relaxations
6.4.1 Communication candidate relaxations
6.4.2 Program order candidate relaxations
6.4.3 Fence candidate relaxations
6.5 Annotations
7 Testing candidate relaxations with
diy7
7.1 Principle
7.2 Testing x86
8 Additional relaxations
8.1 Intra-processor dependencies
8.2 Composite relaxations and cumulativity
8.3 Detour candidate relaxations
9 Test variations with
diycross7
10 Identifying coherence orders with observers
10.1 Simple observers
10.2 More observers
10.2.1 Fences and loops in observers
10.2.2 Local observers
10.2.3 Performance of observers
10.3 Three stores or more
11 Command usage
11.1 A note on test names
11.1.1 Family names
11.1.2 Descriptive names for variants
11.2 Common options
11.3 Usage of
diyone7
11.4 Usage of
diycross7
11.5 Usage of
diy7
11.6 Usage of
readRelax7
12 Additional tools: extracting cycles and classification
12.1 Usage of
mcycle7
12.2 Usageof
classify7
12.3 Usage of
norm7
Part III Simulating memory models with
herd7
13 Writing simple models
13.1 Sequential consistency
13.2 Total Store Order (TSO)
13.3 Sequential consistency, total order definition
13.4 Computing coherence orders
14 Producing pictures of executions
14.1 Graph modes
14.2 Showing forbidden executions
15 Model definitions
15.1 Overview
15.2 Identifiers
15.3 Expressions
15.4 Instructions
15.5 Models
15.6 Primitives
15.7 Library
16 Usage of
herd7
16.1 Arguments
16.2 Options
16.3 Configuration files
16.4 File searching
Part IV Some examples
17 Running several tests at once, changing critical parameters
18 Cross compiling, affinity experiment
19 Cross running, testing low-end devices