| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- 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.
- If LKMM-specific terms lost you, glossary.txt might help you.
- o You are new to Linux-kernel concurrency: simple.txt
- 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.
- 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 would like to access lock-protected shared variables without
- having their corresponding locks held: locking.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
- o You would like a detailed understanding of what your compiler can
- and cannot do to control dependencies: control-dependencies.txt
- o You would like to mark concurrent normal accesses to shared
- variables so that intentional "racy" accesses can be properly
- documented, especially when you are responding to complaints
- from KCSAN: access-marking.txt
- 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 and
- herd-representation.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.
- access-marking.txt
- Guidelines for marking intentionally concurrent accesses to
- shared memory.
- cheatsheet.txt
- Quick-reference guide to the Linux-kernel memory model.
- control-dependencies.txt
- Guide to preventing compiler optimizations from destroying
- your control dependencies.
- explanation.txt
- Detailed description of the memory model.
- glossary.txt
- Brief definitions of LKMM-related terms.
- herd-representation.txt
- The (abstract) representation of the Linux-kernel concurrency
- primitives in terms of events.
- litmus-tests.txt
- The format, features, capabilities, and limitations of the litmus
- tests that LKMM can evaluate.
- locking.txt
- Rules for accessing lock-protected shared variables outside of
- their corresponding critical sections.
- ordering.txt
- Overview of the Linux kernel's low-level memory-ordering
- primitives by category.
- 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!
|