1ab8bcad6SPaul E. McKenneyIt has been said that successful communication requires first identifying 2ab8bcad6SPaul E. McKenneywhat your audience knows and then building a bridge from their current 3ab8bcad6SPaul E. McKenneyknowledge to what they need to know. Unfortunately, the expected 4ab8bcad6SPaul E. McKenneyLinux-kernel memory model (LKMM) audience might be anywhere from novice 5ab8bcad6SPaul E. McKenneyto expert both in kernel hacking and in understanding LKMM. 6ab8bcad6SPaul E. McKenney 7ab8bcad6SPaul E. McKenneyThis document therefore points out a number of places to start reading, 8ab8bcad6SPaul E. McKenneydepending on what you know and what you would like to learn. Please note 9ab8bcad6SPaul E. McKenneythat the documents later in this list assume that the reader understands 10ab8bcad6SPaul E. McKenneythe material provided by documents earlier in this list. 11ab8bcad6SPaul E. McKenney 12ab8bcad6SPaul E. McKenneyo You are new to Linux-kernel concurrency: simple.txt 13ab8bcad6SPaul E. McKenney 14*ebb477cbSPaul E. McKenneyo You have some background in Linux-kernel concurrency, and would 15*ebb477cbSPaul E. McKenney like an overview of the types of low-level concurrency primitives 16*ebb477cbSPaul E. McKenney that the Linux kernel provides: ordering.txt 17*ebb477cbSPaul E. McKenney 18*ebb477cbSPaul E. McKenney Here, "low level" means atomic operations to single variables. 19*ebb477cbSPaul E. McKenney 20ab8bcad6SPaul E. McKenneyo You are familiar with the Linux-kernel concurrency primitives 21ab8bcad6SPaul E. McKenney that you need, and just want to get started with LKMM litmus 22ab8bcad6SPaul E. McKenney tests: litmus-tests.txt 23ab8bcad6SPaul E. McKenney 24ab8bcad6SPaul E. McKenneyo You are familiar with Linux-kernel concurrency, and would 25ab8bcad6SPaul E. McKenney like a detailed intuitive understanding of LKMM, including 26ab8bcad6SPaul E. McKenney situations involving more than two threads: recipes.txt 27ab8bcad6SPaul E. McKenney 28*ebb477cbSPaul E. McKenneyo You would like a detailed understanding of what your compiler can 29*ebb477cbSPaul E. McKenney and cannot do to control dependencies: control-dependencies.txt 30*ebb477cbSPaul E. McKenney 31ab8bcad6SPaul E. McKenneyo You are familiar with Linux-kernel concurrency and the use of 32ab8bcad6SPaul E. McKenney LKMM, and would like a quick reference: cheatsheet.txt 33ab8bcad6SPaul E. McKenney 34ab8bcad6SPaul E. McKenneyo You are familiar with Linux-kernel concurrency and the use 35ab8bcad6SPaul E. McKenney of LKMM, and would like to learn about LKMM's requirements, 36ab8bcad6SPaul E. McKenney rationale, and implementation: explanation.txt 37ab8bcad6SPaul E. McKenney 38ab8bcad6SPaul E. McKenneyo You are interested in the publications related to LKMM, including 39ab8bcad6SPaul E. McKenney hardware manuals, academic literature, standards-committee 40ab8bcad6SPaul E. McKenney working papers, and LWN articles: references.txt 41ab8bcad6SPaul E. McKenney 42ab8bcad6SPaul E. McKenney 43ab8bcad6SPaul E. McKenney==================== 44ab8bcad6SPaul E. McKenneyDESCRIPTION OF FILES 45ab8bcad6SPaul E. McKenney==================== 46ab8bcad6SPaul E. McKenney 47ab8bcad6SPaul E. McKenneyREADME 48ab8bcad6SPaul E. McKenney This file. 49ab8bcad6SPaul E. McKenney 50ab8bcad6SPaul E. McKenneycheatsheet.txt 51ab8bcad6SPaul E. McKenney Quick-reference guide to the Linux-kernel memory model. 52ab8bcad6SPaul E. McKenney 53*ebb477cbSPaul E. McKenneycontrol-dependencies.txt 54*ebb477cbSPaul E. McKenney Guide to preventing compiler optimizations from destroying 55*ebb477cbSPaul E. McKenney your control dependencies. 56*ebb477cbSPaul E. McKenney 57ab8bcad6SPaul E. McKenneyexplanation.txt 58ab8bcad6SPaul E. McKenney Detailed description of the memory model. 59ab8bcad6SPaul E. McKenney 60ab8bcad6SPaul E. McKenneylitmus-tests.txt 61ab8bcad6SPaul E. McKenney The format, features, capabilities, and limitations of the litmus 62ab8bcad6SPaul E. McKenney tests that LKMM can evaluate. 63ab8bcad6SPaul E. McKenney 64*ebb477cbSPaul E. McKenneyordering.txt 65*ebb477cbSPaul E. McKenney Overview of the Linux kernel's low-level memory-ordering 66*ebb477cbSPaul E. McKenney primitives by category. 67*ebb477cbSPaul E. McKenney 68ab8bcad6SPaul E. McKenneyrecipes.txt 69ab8bcad6SPaul E. McKenney Common memory-ordering patterns. 70ab8bcad6SPaul E. McKenney 71ab8bcad6SPaul E. McKenneyreferences.txt 72ab8bcad6SPaul E. McKenney Background information. 73ab8bcad6SPaul E. McKenney 74ab8bcad6SPaul E. McKenneysimple.txt 75ab8bcad6SPaul E. McKenney Starting point for someone new to Linux-kernel concurrency. 76ab8bcad6SPaul E. McKenney And also a reminder of the simpler approaches to concurrency! 77