162306a36Sopenharmony_ciIt has been said that successful communication requires first identifying
262306a36Sopenharmony_ciwhat your audience knows and then building a bridge from their current
362306a36Sopenharmony_ciknowledge to what they need to know.  Unfortunately, the expected
462306a36Sopenharmony_ciLinux-kernel memory model (LKMM) audience might be anywhere from novice
562306a36Sopenharmony_cito expert both in kernel hacking and in understanding LKMM.
662306a36Sopenharmony_ci
762306a36Sopenharmony_ciThis document therefore points out a number of places to start reading,
862306a36Sopenharmony_cidepending on what you know and what you would like to learn.  Please note
962306a36Sopenharmony_cithat the documents later in this list assume that the reader understands
1062306a36Sopenharmony_cithe material provided by documents earlier in this list.
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cio	You are new to Linux-kernel concurrency: simple.txt
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_cio	You have some background in Linux-kernel concurrency, and would
1562306a36Sopenharmony_ci	like an overview of the types of low-level concurrency primitives
1662306a36Sopenharmony_ci	that the Linux kernel provides:  ordering.txt
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci	Here, "low level" means atomic operations to single variables.
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_cio	You are familiar with the Linux-kernel concurrency primitives
2162306a36Sopenharmony_ci	that you need, and just want to get started with LKMM litmus
2262306a36Sopenharmony_ci	tests:  litmus-tests.txt
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_cio	You are familiar with Linux-kernel concurrency, and would
2562306a36Sopenharmony_ci	like a detailed intuitive understanding of LKMM, including
2662306a36Sopenharmony_ci	situations involving more than two threads:  recipes.txt
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_cio	You would like a detailed understanding of what your compiler can
2962306a36Sopenharmony_ci	and cannot do to control dependencies:  control-dependencies.txt
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_cio	You are familiar with Linux-kernel concurrency and the use of
3262306a36Sopenharmony_ci	LKMM, and would like a quick reference:  cheatsheet.txt
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_cio	You are familiar with Linux-kernel concurrency and the use
3562306a36Sopenharmony_ci	of LKMM, and would like to learn about LKMM's requirements,
3662306a36Sopenharmony_ci	rationale, and implementation:	explanation.txt
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_cio	You are interested in the publications related to LKMM, including
3962306a36Sopenharmony_ci	hardware manuals, academic literature, standards-committee
4062306a36Sopenharmony_ci	working papers, and LWN articles:  references.txt
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci====================
4462306a36Sopenharmony_ciDESCRIPTION OF FILES
4562306a36Sopenharmony_ci====================
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ciREADME
4862306a36Sopenharmony_ci	This file.
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_cicheatsheet.txt
5162306a36Sopenharmony_ci	Quick-reference guide to the Linux-kernel memory model.
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_cicontrol-dependencies.txt
5462306a36Sopenharmony_ci	Guide to preventing compiler optimizations from destroying
5562306a36Sopenharmony_ci	your control dependencies.
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ciexplanation.txt
5862306a36Sopenharmony_ci	Detailed description of the memory model.
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_cilitmus-tests.txt
6162306a36Sopenharmony_ci	The format, features, capabilities, and limitations of the litmus
6262306a36Sopenharmony_ci	tests that LKMM can evaluate.
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_ciordering.txt
6562306a36Sopenharmony_ci	Overview of the Linux kernel's low-level memory-ordering
6662306a36Sopenharmony_ci	primitives by category.
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_cirecipes.txt
6962306a36Sopenharmony_ci	Common memory-ordering patterns.
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_cireferences.txt
7262306a36Sopenharmony_ci	Background information.
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_cisimple.txt
7562306a36Sopenharmony_ci	Starting point for someone new to Linux-kernel concurrency.
7662306a36Sopenharmony_ci	And also a reminder of the simpler approaches to concurrency!
77