2020-08-05 05:00:17 +08:00
|
|
|
It has been said that successful communication requires first identifying
|
|
|
|
what your audience knows and then building a bridge from their current
|
|
|
|
knowledge to what they need to know. Unfortunately, the expected
|
|
|
|
Linux-kernel memory model (LKMM) audience might be anywhere from novice
|
|
|
|
to expert both in kernel hacking and in understanding LKMM.
|
|
|
|
|
|
|
|
This document therefore points out a number of places to start reading,
|
|
|
|
depending on what you know and what you would like to learn. Please note
|
|
|
|
that the documents later in this list assume that the reader understands
|
|
|
|
the material provided by documents earlier in this list.
|
|
|
|
|
|
|
|
o You are new to Linux-kernel concurrency: simple.txt
|
|
|
|
|
2020-08-12 02:27:33 +08:00
|
|
|
o You have some background in Linux-kernel concurrency, and would
|
|
|
|
like an overview of the types of low-level concurrency primitives
|
|
|
|
that the Linux kernel provides: ordering.txt
|
|
|
|
|
|
|
|
Here, "low level" means atomic operations to single variables.
|
|
|
|
|
2020-08-05 05:00:17 +08:00
|
|
|
o You are familiar with the Linux-kernel concurrency primitives
|
|
|
|
that you need, and just want to get started with LKMM litmus
|
|
|
|
tests: litmus-tests.txt
|
|
|
|
|
|
|
|
o You are familiar with Linux-kernel concurrency, and would
|
|
|
|
like a detailed intuitive understanding of LKMM, including
|
|
|
|
situations involving more than two threads: recipes.txt
|
|
|
|
|
2020-08-12 02:27:33 +08:00
|
|
|
o You would like a detailed understanding of what your compiler can
|
|
|
|
and cannot do to control dependencies: control-dependencies.txt
|
|
|
|
|
2020-08-05 05:00:17 +08:00
|
|
|
o You are familiar with Linux-kernel concurrency and the use of
|
|
|
|
LKMM, and would like a quick reference: cheatsheet.txt
|
|
|
|
|
|
|
|
o You are familiar with Linux-kernel concurrency and the use
|
|
|
|
of LKMM, and would like to learn about LKMM's requirements,
|
|
|
|
rationale, and implementation: explanation.txt
|
|
|
|
|
|
|
|
o You are interested in the publications related to LKMM, including
|
|
|
|
hardware manuals, academic literature, standards-committee
|
|
|
|
working papers, and LWN articles: references.txt
|
|
|
|
|
|
|
|
|
|
|
|
====================
|
|
|
|
DESCRIPTION OF FILES
|
|
|
|
====================
|
|
|
|
|
|
|
|
README
|
|
|
|
This file.
|
|
|
|
|
|
|
|
cheatsheet.txt
|
|
|
|
Quick-reference guide to the Linux-kernel memory model.
|
|
|
|
|
2020-08-12 02:27:33 +08:00
|
|
|
control-dependencies.txt
|
|
|
|
Guide to preventing compiler optimizations from destroying
|
|
|
|
your control dependencies.
|
|
|
|
|
2020-08-05 05:00:17 +08:00
|
|
|
explanation.txt
|
|
|
|
Detailed description of the memory model.
|
|
|
|
|
|
|
|
litmus-tests.txt
|
|
|
|
The format, features, capabilities, and limitations of the litmus
|
|
|
|
tests that LKMM can evaluate.
|
|
|
|
|
2020-08-12 02:27:33 +08:00
|
|
|
ordering.txt
|
|
|
|
Overview of the Linux kernel's low-level memory-ordering
|
|
|
|
primitives by category.
|
|
|
|
|
2020-08-05 05:00:17 +08:00
|
|
|
recipes.txt
|
|
|
|
Common memory-ordering patterns.
|
|
|
|
|
|
|
|
references.txt
|
|
|
|
Background information.
|
|
|
|
|
|
|
|
simple.txt
|
|
|
|
Starting point for someone new to Linux-kernel concurrency.
|
|
|
|
And also a reminder of the simpler approaches to concurrency!
|