Akira Yokosawa (80): ebook: Allocate enough width for four-digit page counts in TOC ebook: Print page counts on upper-right edge of page ebook: Use normal epigraph for chapter headings ebook: Reduce chapter heading's font size and spaces defer: Retouch SVG files for browser compatibility (2nd attempt) index: Add tags for 'reference count' index: Add tags for 'existence guarantee' index: Add tags for 'type-safe memory' defer/rcuapi: Add index tags for RCU APIs defer/rcuapi: Fix typo 'get_nulls_values()' datastruct: Add index tags for userspace-RCU APIs count: Add index tags to APIs locking: Add index tags to APIs treewide: Add acronym tags for QSBR and EBR locking: Add acronym tag for RAII punctcheck.pl: Fix false positive by stricter pattern for \acr{} Revert "defer/rcuintro: Fix ThomasEHart2006a punctuation issue." defer/rcuintro: Tweak appearance of new Table 9.1 defer/rcuintro: Add indexing tags to RCU Core APIs defer/rcuintro: Use endash for pair of rcu_read_lock() and rcu_read_unlock() defer/rcuintro: Fix trivial typos defer/rcuintro: Use nbsp around short numbers glossary: Tweak upper-case/lower-case in indexed terms defer/rcuintro: Add indexing tags for 'RCU-protected pointer/data' ebook: Increase headheight to satisfy fancyhdr Add explicit 'helvratio' value to newtxtext formal: Update rcu-test data in Figure 12.4 (as of v5.16) index: Initial page number format support locking, defer: POC of bold face page number in index defer: POC of hierarchical index with modifier part's case preserved index: Add prenotes of legends index, glossary: Underline page numbers in Glossary index: Retouch prenotes glossary: Tweak indexing macro bib/perfmeas: Fix doi of McKenney99b advsync: Add major indexing tags to 'NBS' and 'forward-progress guarantee' locking: Mark major references to 'livelock', 'starvation", and 'unfairness' memorder: Add indexing tags for historic lockless_dereference() debugging: Fix typo (heisenberg -> heisenbug) debugging: Add indexing tags to '(anti-)heisenbug' index: Reform indexing tags related to 'memory consistency' Replace \include{} with \input{} for parallel pdflatex runs Makefile: Fix issues WRT parallel runs of pdflatex Restore Makefile as of 2022.01.25 Add script for parallel-pdflatex-run regression test Makefile: Fix regression of parallel run of autodate.sh intro, together: Promote section-opening QQzs to 'essential' defer, together: Group consecutive QQzs cleverefcheck.pl: Add patterns to catch QQz positioning issues formal: Update RCU-test-ratio table as of v5.17 advsync: Fix typo advsync: Fix markers of end-of-sentence periods punctcheck.pl: Add pattern to catch reverse use of period markers punctcheck.pl: Add hints in complaint messages Fix period markers together/applyrcu: Fix typo Makefile: Ignore temporary .eps files Makefile: Remove redundant nest of filter-out function Makefile: Let ebook-size builds graduate from 'WIP' run{first}latex.sh: Use variable for 'pdflatex' command Makefile: Test $(LATEX) before invoking runfirstlatex.sh run(first)latex.sh: Catch error exit of LATEX runlatex.sh: Align status report messages glossary: Tweak index markers index: Add indexing tags to memory barrier related terms indexsee: Add several 'See xxxx' entries for two-level index glossary: Capitalize 'Release store' formal: Update RCU-test-ratio table as of v5.18 epstopdf-rule.mk: Add -dNOSAFER to eps2eps for .eps -> .pdf (from .tex) defer/whichtochoose: Use parnotes for footnote in tabularx defer/whichtochoose: Fix trivial typos SMPdesign: Apply \clnref{} scheme to Listing 6.5 SMPdesign: Fix typos formal: Update RCU-test-ratio table as of v5.19 count: Adjust index marker of _Thread_local defer/rcuusage: Remove redundant back quote treewide: Fix trivial typos Fix punctuation around footnotes SMPdesign: Fix command characters in code snippets Cope with Ghostscript 10.00.0 and later Elad Lahav (5): count: The fast path is for the write side, not the read side. CodeSamples: count_stat_eventual.c should use pthread_t with pthread_create() CodeSamples: Support for building on different operating systems CodeSamples: Switch ARM64 get_timestamp() to use the hardware counter count: Switch from GCC to C11 thread-local storage Johann Klähn (10): count: Fix typos defer: Fix typos SMPdesign: Remove redundant word toolsoftrade: Fix reference to concept introduced earlier cpu: Fix typo glossary: Fix typo glossary: Use more common definition of RAII advsync: Fix typo advsync: Fix call to free memorder: Fix typos Paul E. McKenney (85): FAQ: Update Chinese-translation information utilities: Upgrade toarxiv.sh for new release utilities/torelease: Add ebook version to release process appendix/questions: Add a reminder for future work defer/rcuintro: Add section on the core RCU API defer/rcuusage: Self-review updates defer/rcuusage: Self-review checkpoint defer/rcuintro: Fix ThomasEHart2006a punctuation issue. defer/rcuusage: Complete self-review changes defer/rcuintro: Wordsmith and propagate to RCU fundamentals defer/rcufundamental: Propagate core API into RCU fundamentals debugging: Mention possibility of accidental anti-heisenbugs defer/rcuintro: Fix typo s/te/the/ intro: Add "iron triangle" defer/rcuapi: Add a section outlining software-engineering concerns howto: Add QQ on benefits of passive reading defer/rcuapi: Use "Core RCU API" consistently defer/rcuintro: Add QQ on "RCU-protected pointer" definition memorder: Expand on and cross-link discussions of dependencies glossary: Additions from index, A-E cartoons: Add non-linearizable solar system glossary: Additions from index, F-K glossary: Additions from L-R glossary: Additions from index, S-Z defer/whichtochoose: Rework deferred-reclamation memory overhead glossary: Update non-blocking and add NBS count: Add flag to prompt wordsmithing sentence future/tm: Wordsmith "outside world" paragraph formal/axiomatic: Tie in separation logic and spatial synchronization together: Add a pair of sections on long-duration accesses defer/rcuusage: Clarify type-safe RCU reader constraints defer/rcuapi: Describe SRCU initialization and cleanup advsync: Satisfy RMW atomics pedants defer: Update RCU use-cases diagram defer/rcuapi: Remove extraneous \midrule in big APIs table future/formalregress: Add a missing "open" defer/rcuusage: Light-weight GC based on existence guarantee advsync: Wordsmith NBS examples advsync: NBS underlying and subdivided operations advsync: Hoist theory-vs-practice footnote advsync: NBS wordsmithing advsync: Add QQ for NBS redemption advsync: Fix punctuation-check complaints toolsoftrade: Clarify rwlock efficiency formula description advsync: Expand QQ answer to include benefits of learning NBS memorder: Standarize on acquire load and release store appendix/whymb: Make Transition (h) do strict MESI SMPdesign: Temper criticism of code locking appendix/whymb: Clarify memory-barrier operation appendix/whymb: Clarify QQ C.8 appendix/whymb: Drive-by fixes glossary: Add memory-ordering terms appendix/whymb: Store buffers and partial cache lines appendix/whymb: Add stale/reorded QQ advsync: Add QQ about population obliviousness on finite systems advsync: Add QQ about usefulness of demonic schedulers debugging: Add small Kipling dose to performance transition appendix/whymb: Clarify DMA data-corruption scenarios Bibliography update howto: Add Andrew Chien's textbook to Alternatives locking: Add section describing temporal properties of locks locking: Add labels to saw-kerf diagram locking: Wordsmithing defer/whichtochoose: Note possibility of membarrier() for hazptr SMPdesign: Work in the spacetime partitioning viewpoint Bibliography update SMPdesign: Fix past-tense/plural typo s/survived/survives/ future/formalregress: Add QQ about utopian requirements formal: Update list of Linux-kernel RCU changes locking: Fold saw-kerf section into existing 7.1.4 locking: Suggest lock address to order same-type lock hierarchy locking: QQ7.3 note blocking signals goes recursive locking: Fix typo s/or the as the/or as the/ locking: Not Rust compiler-visible lock/data association memorder: Order of cachelines for co, not order of stores memorder: Add load-to-store, emphasize cacheline visibility memorder: Add footnote for shared store buffers and non-multicopy atomicity memorder: Summarize load/store linking in 15.6 defer/rcuusage: Relate RCU time/space properties to other primitives defer/rcuusage: Add references to QQ9.65 locking: Fix time-partitioning typo Bibliography update locking: Add Rust citation for lock/data association datastruct: Clarify example of modern large-memory systems memorder: Add example showing store breaking release-acquire chain SeongJae Park (3): count: Adds a missed unbreakable space count: Add missed parentheses for balance_count() locking: Consistently append parentheses to pthread_cond_wait() Xuwei Fu (1): Fix svg in chapter7: change incorrect "Lock B" in `qsort` to "Lock C". Zhouyi Zhou (4): Fix a typo in Bibliography bib/swtools: Fix DaveJones2011Trinity bibliography entry bib/swtools: Bring Liang:2018:VTB to IEEE standard bib: Improve several bibliography items .gitignore | 1 + CodeSamples/Makefile | 4 +- CodeSamples/api-pthreads/api-linux.h | 36 + CodeSamples/api-pthreads/api-pthreads.h | 13 - CodeSamples/api-pthreads/api-qnx.h | 37 + CodeSamples/arch-arm64/arch-arm64.h | 11 +- CodeSamples/count/count_end.c | 12 +- CodeSamples/count/count_stat_eventual.c | 2 +- CodeSamples/depends.mk | 29 +- CodeSamples/formal/data/RCU-test-ratio.eps | 2779 ++++++++++++---------- CodeSamples/formal/data/plot.sh | 2 +- CodeSamples/formal/data/rcu-test.dat | 6 +- CodeSamples/formal/litmus/C-MP+o-r+a-o.litmus | 28 + CodeSamples/formal/litmus/C-MPO+o-r+a-o+o.litmus | 32 + FAQ.txt | 11 +- Makefile | 33 +- Makefile.2022.01.25 | 608 +++++ SMPdesign/SMPdesign.tex | 77 +- SMPdesign/criteria.tex | 2 +- a2ping-rule.mk | 4 +- advsync/advsync.tex | 296 ++- advsync/rt.tex | 4 +- appendix/appendix.tex | 8 +- appendix/questions/after.tex | 4 +- appendix/questions/questions.tex | 2 + appendix/toyrcu/toyrcu.tex | 7 +- appendix/whymb/whymemorybarriers.tex | 187 +- bib/RCU.bib | 28 +- bib/TM.bib | 15 +- bib/hw.bib | 31 +- bib/memorymodel.bib | 2 +- bib/perfmeas.bib | 2 +- bib/swtools.bib | 19 +- bib/syncrefs.bib | 22 + cartoons/ArtistMapping.txt | 3 + cartoons/SolarSystem.png | Bin 0 -> 159965 bytes count/count.tex | 49 +- cpu/overheads.tex | 4 +- cpu/overview.tex | 2 +- datastruct/datastruct.tex | 23 +- debugging/debugging.tex | 25 +- defer/QSBRGracePeriod.svg | 51 +- defer/RCUspacetime.svg | 88 +- defer/RCUusecases.svg | 712 +++--- defer/defer.tex | 2 +- defer/hazptr.tex | 2 +- defer/rcu.tex | 6 +- defer/rcuapi.tex | 241 +- defer/rcufundamental.tex | 23 +- defer/rcuintro.tex | 162 +- defer/rcurelated.tex | 6 +- defer/rcuusage.tex | 317 ++- defer/refcnt.tex | 3 +- defer/whichtochoose.tex | 42 +- epstopdf-rule.mk | 4 +- formal/axiomatic.tex | 4 +- formal/formal.tex | 10 + formal/spinhint.tex | 4 +- future/cpu.tex | 2 +- future/formalregress.tex | 21 +- future/tm.tex | 12 +- glossary.tex | 378 ++- glsdict.tex | 12 +- howto/howto.tex | 46 + indexsee.tex | 18 + intro/intro.tex | 16 +- locking/LayeredLockHierarchy.svg | 2 +- locking/LocalLockHierarchy.svg | 2 +- locking/NoLockHierarchy.svg | 2 +- locking/NonLocalLockHierarchy.svg | 2 +- locking/locking-existence.tex | 2 +- locking/locking.tex | 102 +- locking/sawkerf.png | Bin 0 -> 12932 bytes memorder/memorder.tex | 186 +- memorder/memorybarriercum.svg | 123 +- perfbook-lt.tex | 101 +- together/applyrcu.tex | 128 +- together/hazptr.tex | 25 +- together/refcnt.tex | 12 +- together/seqlock.tex | 17 +- toolsoftrade/toolsoftrade.tex | 25 +- utilities/adjustindexformat.pl | 42 + utilities/cleverefcheck.pl | 18 + utilities/parallel-latex-regress.sh | 75 + utilities/punctcheck.pl | 17 +- utilities/runfirstlatex.2022.01.25.sh | 98 + utilities/runfirstlatex.sh | 16 +- utilities/runlatex.2022.01.25.sh | 164 ++ utilities/runlatex.sh | 25 +- utilities/toarxiv.sh | 4 +- utilities/torelease.sh | 13 +- 91 files changed, 5458 insertions(+), 2385 deletions(-) create mode 100644 CodeSamples/api-pthreads/api-linux.h create mode 100644 CodeSamples/api-pthreads/api-qnx.h create mode 100644 CodeSamples/formal/litmus/C-MP+o-r+a-o.litmus create mode 100644 CodeSamples/formal/litmus/C-MPO+o-r+a-o+o.litmus create mode 100644 Makefile.2022.01.25 create mode 100644 cartoons/SolarSystem.png create mode 100644 locking/sawkerf.png create mode 100755 utilities/adjustindexformat.pl create mode 100755 utilities/parallel-latex-regress.sh create mode 100644 utilities/runfirstlatex.2022.01.25.sh create mode 100644 utilities/runlatex.2022.01.25.sh