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