0001 It has been said that successful communication requires first identifying
0002 what your audience knows and then building a bridge from their current
0003 knowledge to what they need to know. Unfortunately, the expected
0004 Linux-kernel memory model (LKMM) audience might be anywhere from novice
0005 to expert both in kernel hacking and in understanding LKMM.
0006
0007 This document therefore points out a number of places to start reading,
0008 depending on what you know and what you would like to learn. Please note
0009 that the documents later in this list assume that the reader understands
0010 the material provided by documents earlier in this list.
0011
0012 o You are new to Linux-kernel concurrency: simple.txt
0013
0014 o You have some background in Linux-kernel concurrency, and would
0015 like an overview of the types of low-level concurrency primitives
0016 that the Linux kernel provides: ordering.txt
0017
0018 Here, "low level" means atomic operations to single variables.
0019
0020 o You are familiar with the Linux-kernel concurrency primitives
0021 that you need, and just want to get started with LKMM litmus
0022 tests: litmus-tests.txt
0023
0024 o You are familiar with Linux-kernel concurrency, and would
0025 like a detailed intuitive understanding of LKMM, including
0026 situations involving more than two threads: recipes.txt
0027
0028 o You would like a detailed understanding of what your compiler can
0029 and cannot do to control dependencies: control-dependencies.txt
0030
0031 o You are familiar with Linux-kernel concurrency and the use of
0032 LKMM, and would like a quick reference: cheatsheet.txt
0033
0034 o You are familiar with Linux-kernel concurrency and the use
0035 of LKMM, and would like to learn about LKMM's requirements,
0036 rationale, and implementation: explanation.txt
0037
0038 o You are interested in the publications related to LKMM, including
0039 hardware manuals, academic literature, standards-committee
0040 working papers, and LWN articles: references.txt
0041
0042
0043 ====================
0044 DESCRIPTION OF FILES
0045 ====================
0046
0047 README
0048 This file.
0049
0050 cheatsheet.txt
0051 Quick-reference guide to the Linux-kernel memory model.
0052
0053 control-dependencies.txt
0054 Guide to preventing compiler optimizations from destroying
0055 your control dependencies.
0056
0057 explanation.txt
0058 Detailed description of the memory model.
0059
0060 litmus-tests.txt
0061 The format, features, capabilities, and limitations of the litmus
0062 tests that LKMM can evaluate.
0063
0064 ordering.txt
0065 Overview of the Linux kernel's low-level memory-ordering
0066 primitives by category.
0067
0068 recipes.txt
0069 Common memory-ordering patterns.
0070
0071 references.txt
0072 Background information.
0073
0074 simple.txt
0075 Starting point for someone new to Linux-kernel concurrency.
0076 And also a reminder of the simpler approaches to concurrency!