Akira Yokosawa (189): CodeSamples: Add C-cmpxchg.litmus CodeSamples/formal/litmus/api.h: Fix definition of cmpxchg() CodeSamples: Fix definition of cmpxchg() in api-gcc.h Makefile: Add recipe to remove obsolete intermediate files defer/rcuapi: Employ new scheme for snippets in Answers to Quick Quizzes memorder: Avoid citing duplicate bib entries fcvextract.pl: Enhance comment block handling of C source CodeSamples: Add explicit 'keepcomment=yes' options fcvextract.pl: Make 'keepcomment=no' as default CodeSamples: Remove redundant \fcvexclude fcvextract.pl: Support '/* \lnlbl{...} */' style label in C source datastruct: Employ new scheme for snippets of hash_bkt.c datastruct: Update hashdiagram figure datastruct: Employ new scheme for snippets of hash_bkt_rcu and hash_resize Make sure lmtt font is used in 'VerbatimL' and 'Verbatim' env Use wider tabsize for snippet in 'listing*' datastruct: Tweak hyphenation gen_snippet_d.pl: Add rules to ignore editor's backup files EXP hashtorture.h: Avoid sporadic SIGSEGV in hash_bkt_rcu datastruct/hash: Tweak appearance of updated code in snippet datastruct/hash: Tweak indent of folded line in snippet datastruct/hash: Annotate racy accesses debugging: Define and use '\lopt' macro in description heading datastruct/hash: Fix trivial typo datastruct/hash: Simplify hash_resize.c datastruct/hash: Add a couple of Quick Quizzes regarding hash_resize.c datastruct/hash: Fix unnecessary folding in code snippet datastruct/hash: Adjust context to updated code in hash_resize.c datastruct/hash: Add Quick Quiz on READ_ONCE/WRITE_ONCE in hash_resize.c datastruct/hash: Display error msg if rcu_barrier() is not available Makefile: Automate OBSOLETE_FILES definition datastruct/hash: Don't track hash_resize_s datastruct/hash: Fix irrelevant clause in answer to quick quiz debugging: Employ new scheme for code snippets defer: Use \slash to permit line break behind '/' memorder: Fix conflict of commandchars choice in .litmus files memorder: Make RCU litmus tests klitmus7 ready Add checkfcv.pl Makefile: Invoke checkfcv.pl in -> .fcv recipes CodeSamples: Fix commandchars collision Improve definition of \nbco{} and \qco{} defer/rcufundamental: Fix typo of \ref{} command fcvextract.pl: Treat '.spin' files as C sources formal/spinhint: Employ new scheme for code snippet formal/spinhint: Update output lists of spin formal/spinhint: Update tables of memory usage of Spin formal/spinhint: Put footnote on header in table formal/spinhint: Use \co{...} rather than {\tt ...} formal/spinhint: Add result of 3 readers 3 updaters QRCU Spin run formal/spinhint: Add column of search depth in Table 12.2 formal/spinhint: Place footnote inside floating table formal/spinhint: Clarify hashtable sizes used in Tables 12.2 and 12.3 Set default fontfamily for snippets of 'fancyvrb' Change monospace font of snippets for targets 'mss', 'msns', and 'msn' formal/spinhint: Update memory usage in QRCU Spin summary table formal/spinhint: Substitute ':formal:' for ':analysis:' in labels Fix typo in Table 9.3 defer/rcuapi: Tweak Table 9.3 with nimbusmononarrow font defer/rcuapi: Force break between two API in Table 9.3 Makefile: Fix recipe of target 'perfbook-msn.pdf' Makefile: Add check of font package availability Specify PDF minor version 1.7 Suppress warning from pdfTeX on figures transformed by Inkscape Makefile: Add optional recipe to detect conflict in page group object Makefile: Don't remove .fcv and .ltms files in target 'clean' Widen tabsize of code snippets for 1c layout Update mpostcheck.sh to get ready for TeX Live 2019 formal/dyntickrcu: Employ new scheme for inline snippets fcvextract.pl: Add rule to ignore white spaces around comment block fcvextract.pl: Add rule for option 'gobbleblank' formal/dyntickrcu: Employ new scheme for code snippets formal/promela/dyntick: Update .spin.trail.txt file treewide: Define and use \rt macro for '-rt' formal/dyntickrcu: Tweak appearance formal/dyntickrcu: Remove '()' in state names formal/dyntickrcu: Tweak indent behind 'listing' environment count: Tweak indent behind 'listing' environment SMPdesing, locking: Tweak indent behind 'listing' environment datastruct, defer: Tweak indent behind 'listing' environment formal/spinhint: Tweak indent behind 'listing' environment formal/dyntickrcu: Add nbsp formal/dyntickrcu: Mitigate ugliness of tall inline snippets formal/dyntickrcu: Fix the way to redefine VerbatimN RCU.bib: Add entries of git commits of dyntickrcu fixes formal/dyntickrcu: Cite git commits of dyntickrcu fixes defer/hazptr: Extract snippet from hazptr.c defer/hazptr: Fix trivial typo RCU.bib: Add entry of git commit of Tree RCU formal/dyntickrcu: Adjust context and fix typo toolsoftrade: Fix extraction range of waitall() toyrcu: Convert Listing B.1 to new scheme toyrcu: Extract Listing B.15 from rcu_nest.h toolsoftrade: Fix typo FAQ-BUILD: Update for recent Fedora releases howto: Stop mentioning quantum computing toyrcu: Extract Listing B.13 from rcu.h styleguide: Update description of available options to \begin{snippet} api-pthreads: Fold defines too wide for code snippet Create .mailmap to fix unreachable email address styleguide: Introduce/Experiment 'cleveref' package Define LaTeX macros inspired by 'cleveref' to reference line labels dyntickrcu: Fix trivial typo ppcmem: Apply new scheme of code snippets bib/swtools: Add references to PowerPC atomic RMW fixes ppcmem: Cite Git commit of PowerPC atomic_xxx_return fix ppcmem: Add Quick Quiz on lwsync in Listing 12.23 ppcmem: Move final sentence of Answer to QQZ 12.27 to the next Make hyperlinks colorful and browsable in PDF viewer dyntickrcu: Apply 'cleveref' way of cross reference Tell 'cleveref' to respect Oxford comma Define '\clnrefthro' for 'lines~m through~n' count_end_rcu.c: Remove unnecessary READ_ONCE() together/count: Use \dots for ellipses together: Apply new scheme of code snippets together/refcnt: Clarify corresponding Linux kernel version together/refcnt: Reflect reordering of chapters together/refcnt: Remove out-of-date sentence in QQA 13.2 advsync: Apply new scheme of code snippets Fix cross reference to paragraph memorder: Apply new scheme of code snippets (part 1/3) memorder: Apply new scheme of code snippets (part 2/3) memorder: Apply new scheme of code snippets (part 3/3) memorder: Apply 'cleveref' way of cross reference memorder: Tweak list of sections Define '\crefthro' for 'Sections~m.n through~m.o' future: Apply new scheme of code snippets future: Apply 'cleveref' way of cross reference appendix/questions/after: Apply new scheme of code snippet appendix/questions: Apply 'cleveref' way of cross reference appendix/toyrcu: Apply new scheme of code snippets appendix/toyrcu: Convert \lnref to \clnref and its variations appendix/toyrcu: Apply 'cleveref' way of cross references Set 'lmtt' as \ttdefault for listing* environment appendix/whymb: Apply new scheme of code snippets appendix/whymb: Apply cleveref way of cross reference Warn of buggy 'cleveref' package Fix indents in code snippets treewide: Add '% mainfile:' tags in headers in sub .tex files Add synctex-forward.sh Add output of '% mainfile: perfbook.tex' tags in extraction scripts FAQ-BUILD: Mention how to enable SyncTeX support defer/rcuapi: Tweak horizontal spacing of wide tables in 1c layout defer/rcuintro: Convert snippet to new scheme defer/rcuintro: Substitute smp_store_release() for WRITE_ONCE() count: Tweak horizontal spacing of wide tables in 1c layout count: Add dashed line indicating ideal time of (non-atomic) increment count: Update CPU type/system count: Merge tables of statistical and limited counter performance count: Reduce width of performance table runfirstlatex.sh: Detect warning of incompatible package version Specify required version of 'titlesec' package runfirstlatex.sh: Add check of buggy 'listings' package runfirstlatex.sh: Add version check of newtx package runfirstlatex.sh: Improve detection of incompatible packages FAQ-BUILD: Update notes related to added checks FAQ-BUILD: Update on Fedora 31 Makefile: Add existence chech of 'newtx' and 'courier-scaled' fonts FAQ-BUILD: Add note on Fedora's Ghostscript regression toolsoftrade: Use \clnrefrange{}{} for range of lines in snippets toolsoftrade: Add cross reference to lines in snippets count: Use \clnrefrange{}{} for range of lines in snippets SMPdesign: Use \clnrefrange{}{} for ranges of lines in snippets SMPdesign: Add cross references to lines in snippets locking: Use \clnrefrange{}{} to reference range of lines in snippets defer: Use \clnrefrange{}{} to refernece range of lines in snippets defer/rcufundamental: Add cross refernece to line in snippet datastruct: Use \clnrefrange{}{} to refernece range of lines in snippets debugging: Use \clnrefrange{}{} to refernece range of lines in snippets formal: Use \clnrefrange{}{} to refernece range of lines in snippets together: Fix singular/plural verb form advsync/rt: Fix usage of \clnref{} Add cross references to lines in snippets of count_lim and count_stat_eventual Use \crefrange{}{} for range of figures bib/swtools: Add entries of reports on store tearing toolsortrade: Backport LWN article toolsoftrade: Use 'quote' for made-up dialogue Makefile: Add compatibility check of Ghostscript and a2ping (9.50 vs 2.84p) FAQ-BUILD: Add a workaround for Fedora's Ghostscript regression appendix/ack: Fill in missing ')' appendix/ack: Use \Cref{} for cross references in reviewers list styleguide: Clarify newline-after-sentence rule is for LaTeX source styleguide: Treat current snippet scheme as 'the scheme' bib/hw.bib: Use endash for volume range treewide: Use endash for ranges styleguide: Update on cross-reference and endash toyrcu: Use mathcal O for 'orders of' defer/rcuusage: Fix typo (that -> than) advsync: Get rid of ACCESS_ONCE() cpu/overview: Mention approaches other than 'pipelining' Balbir Singh (1): Add optional flag 'LATEX_OPT' in run{first}latex.sh Junchang Wang (4): rcu: Use READ_ONCE() and WRITE_ONCE() for shared variable rcu_gp_ctr rcu_qs: Use READ_ONCE() AND WRITE_ONCE() for shared variable rcu_gp_ctr rcu_nest: Fix concurrency issues rcu_nest: Update description of rcu_nest.[hc] Paul E. McKenney (285): intro: Add containers and hypervisor to "iron triangle" diagram locking: Add section-level epigraphs utilities: Add a script to extract epigraphs SMPdesign: Use ceiling symbol, skip odd floor computation debugging: Modernize erroneous epigraph howto: Add epigraphs defer: Update epigraph intro: Add section-level epigraphs cpu: Add section-level epigraphs toolsoftrade: Add section-level epigraphs count: Add section-level epigraphs datastruct: Fix ordering in hashtab_resize() datastruct: Clarify QQ 10.13 on hashtab_resize() ordering hashtorture.h: Use READ_ONCE() and WRITE_ONCE() for goflag datastruct/hash: Unlock what is locked during resize datastruct/hash: Check initial schroedinger insertions datastruct/hash: Remove unused hash_private datastruct/hash: Pass key functions into hashtab_alloc() datastruct/hash: Fill in the ->hte_hash field for BUG_ON() datastruct/hash: Remove redundant "if" statement datastruct/hash: Create a ht_lock_state structure datastruct/hash: Take care of multiply defined labels datastruct/hash: Make ht_lock_state self-contained datastruct/hash: Record computed hash value datastruct/hash: Plumb ht_lock_state into hashtab_add() datastruct/hash: Debug checks prior to hashtab_add() revamp datastruct/hash: Publish new hash table after initializing it datastruct/hash: Source ->hls_idx[1] from correct ht structure datatruct/hash: Don't recompute hashes in hashtab_add() datastruct/hash: Plumb ht_lock_state into hashtab_del() datastruct/hash: Don't recompute hashes in hashtab_del() datastruct/hash: Remove unused htp_master parameter from hashtab_del() datastruct/hash: Remove unused htp_master parameter from hashtab_add() datastruct/hash: Remove unneeded test_htp and hash_register_test() datastruct/hash: Break ht_get_bucket_single() argument list datastruct/hash: Fix line references for structures and bucket selection datastruct/hash: Update hashtab_{un,}lock_mod() description datastruct/hash: Update hashtab_add() description datastruct/hash: Update hashtab_resize() description datastruct/hash: Abbreviate hashtab_lock_mod() line labels datastruct/hash: Abbreviate hashtab_unlock_mod() line labels datastruct/hash: Abbreviate hashtab_lookup() line labels datastruct/hash: Indent hashtab_resize() line labels datastruct/hash: Finish indenting hashtab_resize() line labels datastruct/hash: Simplify hashtab_lookup() datastruct/hash: Remove extraneous barrier from hashtab_resize() datastruct/hash: Remove obsolete Quick Quiz datastruct/hash: Make hashtab_lookup() more responsive during resize datastruct/hash: Make hashtab_del() more thorough datastruct/hash: Check for hashtab_{add,del}() immediate effect datastruct/hash: Make hashtab_del() remove only when present datastruct/hash: Always place to-be-added-to bucket in [0] defer/rcu: Rework "Introduction to RCU" defer/rcuintro: Additional rework defer/rcu: More rework of "Introduction to RCU" datastruct/hash: Wordsmith description of Akira's hash table datastruct/hash: Update quick quizzes memorder: Add outline for higher-level primitives memorder,toolsoftrade: Eliminate memory-access redundancies Merge Paul's wordsmithing of Akira's new hash-table text formal: Include performance results for locking verification memorder: Use \qco{} to save a few characters formal: Add LKMM citations SMPdesign: Add section-level epigraphs memorder: Start section on RCU detailed semantics. memorder: Another subsection of RCU detailed semantics memorder: Cover litmus tests for accesses outside of RCU readers memorder: Add example showing RCU readers insensitive to ordering memorder: Add QQ for reordering and extended RCU readers memorder: Finish first draft of section on RCU detailed semantics memorder: Wordsmithing of section on detailed RCU semantics toolsoftrade: Compilers can convert stores to loads ask: Add acknowledgments of bibtex and Internet services defer/rcuintro: Add citations supporting userspace RCU use memorder: Add memory-allocator section memorder: Add summary to "Higher-Level Primitives" section defer: Remove non-fundamental material from "RCU Fundamentals" defer/rcufundamental: Modernize presentation toolsoftrade: Wordsmith store-to-load paragraph ack: Bring "LaTeX Advisor" section into present tense defer/rcufundamental: Outline rework for publish-subscribe section etc. memorder: Force ordering for multiple-grace-period listings and figures defer: Update RCU publish-subscribe section defer/rcufundamental: Additional wordsmithing and todo-list cleanup defer/rcu: Put API description before usage discussion defer: Add defer/pubsub.svg defer/rcufundamental: Update figure and todo list debugging: Add QQ on pen-and-paper bug found while typing defer/hazptr: Add citation to LaTeX comment defer: Update RCU multiple-versions section formal/spinhint: Update extrapolation for QRCU memory usage defer/rcufundamental: Promote footnote to parentheses defer/rcuapi: Update RCU table of wait-to-finish APIs toolsoftrade: Fix typos and clarify shared-variable access rules toolsoftrade: Add commentary on dead-code elimination defer/rcuapi: Checkpoint while importing existence code Codesamples/datastruct: Create "existence" directory Add .gch precompiled-header type to .gitignore Add existence-structure definitions Remove extraneous argument Fix a few bugs located in testing Add a crude test of basic existence functionality Add a Makefile Add existence_group_rcu_cb(), rename existence_rcu_cb() Credit Dmitry for pointer-tagging trick Add crude stress test for three-hash-table existence mechanism Split out common hash-exists definitions Cache-align critical data structures Add an update-only performance test Clean up Makefile Switch to high debug-unfriendly optimization Make .gitignore ignore perf output Conditionally compiled out conditional delay Add a crude producer/consumer memory allocator Allow per-thread producer-consumer pools Generate initialization code as part of DEFINE_PROCON_MPOOL() Add an unallocate function for aborting allocations Attempt to add procon allocation to keyvalue and hash_exists NULL out freelist ->pm_next pointer as debug aid Add list-tangle checks to procon_test.c Make procon_free() deal with concurrency Prevent bogus semi-NULL pointer from procon allocation Apply procon to existence_group structure Full optimization in Makefile Output actual test duration URCU belt and suspenders Abstract out a existence_cleanup_gone() function existence: Add procon alloc/free statistics existence: Fix procon CB-to-thread plumbing existence: Add option to dump out producer-consumer statistics existence: Cache-align existence_group structure existence: Cache-align hash_exists structure existence: Remove internal alignment for key_value structure existence: Remove internal alignment for hash_exists structure existence: Align procon_mpool structure existence: Add a per-thread buffer to the procon facility existence: Add procon.h to Makefile dependencies existence: Make git ignore all perf.data* files existence: Get a bit more out of perf applied to debug builds First cut existence-wrapped skiplist Add complex-update capability Scripts and data for 3-hash-rotation scalability existence: Add scripts and data for hash-rotation performance mystery existence: Implement rotation through skiplists existence: Add scripts and data output for skiplist rotation Add header for kaleidoscopic data structures and simple test More test code and more fixes existence: Add skiplist kaleidoscope test Add a performance test existence: Only two states for hash/skiplist benchmark! toolsoftrade: Further refine "Avoiding Data Races" owned: Refer back to "Avoiding Data Races" section Merge existence code formal/spinhint: Wordsmithing formal: Remove unused C-SB+o-rcusync-o+rl-rul-o.litmus formal/spinhint: Update QRCU patch prognosis defer/rcuapi: Place validation APIs into separate table defer/rcuapi: Turn Table 9.2 non-sideways defer/rcuapi: Describe validation APIs defer/rcuapi: Remove "version introduced" from Table 9.3 defer/rcuapi: Fill in pointer traversal/update APIs defer/rcuapi: Fill out list and wait-to-finish tables defer/rcuapi: Fill out pointer publish/subscribe text defer/rcu: Move linked-list discussion to new linked-list section defer/rcuapi: Make Table 9.3 avoid the page heading defer/rcu: SLAB_DESTROY_BY_RCU is now SLAB_TYPESAFE_BY_RCU defer/rcuapi: Convert linked-list diagrams from .fig to .svg defer: Remove red outline for Linux-list diagrams debugging: Additional micro-benchmark advice defer/hazptr: Add a couple of production uses for hazard pointers defer: Add overview which-to-choose section and table defer: Add sentence and quick quiz on comparative reader overhead defer: Loosen "real-time" qualifier to "response-time" Bibliography update defer: Add production-uses section defer/seqlock: Add footnote for Dmitry Vyukov's reduction of starvation defer/whichtochoose: Fill out remaining overview caveats defer/rcufundamental: Add abstract RCU-ordering diagram defer/rcufundamental: Add another memory_order_consume working paper defer/rcufundamental: Add RCU grace-period citations Bibliography update locking: Add lock-analysis citation by Guerraoui et al. defer/hazptr: Add hazptr_try_record() and update types defer/hazptr: Convert hazard-pointer type to void* fixup! defer/hazptr: Add hazptr_try_record() and update types fixup! defer/hazptr: Add hazptr_try_record() and update types defer/hazptr: Make route_lookup() use hp_try_record() locking: Add citation for Hugo Guiroux's Ph.D. dissertation defer/hazptr: Checkpoint for text/code update defer/hazptr: Revamp the hazard-pointer description SMPdesign: Wordsmith introduction count: Update Approximate Limit Counter epigraph datastruct: Add section-level epigraphs together: Add section-level epigraphs defer/rcu: Wordsmith lead-in text defer/rcuintro: Fix colors, fonts, and primitives in Figures 9.6 and 9.7 advsync: Add a few citations defer/rcuintro: Fix QQ 9.20 to match Figure 9.7 CodeSamples/defer: Remove unused debug function CodeSamples/defer/hazptr: Apply {READ,WRITE}_ONCE() defer/hazptr: Add discussion of hazptr_free_later() defer/rcuintro: Update trivial Linux-kernel synchronize_rcu() CodeSamples/deferAdd trivial RCU use case and single-threaded tests Bibliography update defer/hazptr: Fix broken statement of restart location constraints defer/hazptr: Update code to match the book defer/rcuapi: Remove a couple of todo @@@ items advsync: Add Tony Hoare quote to that of Peter Denning cpu/overview: Temper atomic-operation optimism Bibliography update defer/rcuintro: Add citation of real-time fixed-duration grace periods toolsoftrade: Add store-tearing color commentary Add an "inviting load fusing" listing defer/hazptr: Refer to Folly use of hazard pointers with link counts advsync/rt: Update real-time regimes diagram and discussion easy: Add section-level epigraphs debugging: Darwinian view of software validation defer/rcurelated: Add Laurent Dufour's mmap_sem work defer/rcuapi: Describe additional lists and update list-replace example defer/rcuapi: Additional RCU list API tweaks Add to todo lists debugging: Temper requirements-discovery advice api-pthreads: Prohibit using WRITE_ONCE() return value .mailmap: Add entries for Paul E. McKenney treewide: Update Paul's email address debugging: Upgrade an epigraph toolsoftrade: *_ONCE() do affect ordering within compiler advsync: Add section-level epigraphs Bibliography update debugging: Add point about focus on bad things promoting good things Self-review of RCU intro section defer: Update Linux-kernel RCU usage graph defer: Self-review of RCU fundamentals defer/rcuapi: Review and self-feedback defer/rcuapi: List-related updates, checkpoint api-pthreads: Increase NR_THREADS to accommodate larger systems count: Update QQ5.6 answer to accommodate C11 count: Use atomic-increment data for larger system count: Use counter peformance data for larger system defer/rcuapi: Clean up RCU list discussion count: Add intermediate values for counter performance defer/rcu: Fix order of sections in roadmap paragraph count: Rotate "Exact?" heading in Table 5.2 defer/rcuapi: Add pointer to additional hlist_nulls documentation datastruct: Clarify caption and discussion of Figure 10.17 count: Rework awkward paragraph debugging: Rework awkward sentence .gitignore: Ignore inkscape's _backup.svg files future/cpu: Follow end-of-sentence markers with newline toolsoftrade: Fix awkward atomic-operation sentences toolsoftrade: Match "entered" with "exit", eliminate disappointment memorder: Section-level epigraphs Bibliography update Bibliography update Add Tom Knight citation for TM and do a few drive-by fixes Remove remaining possessives of plural hazard-pointers future: Add section-level epigraphs future/htm: Add potential alternative epigraph as a LaTeX comment future/tm: Add note about STM internal use of RCU intro: Update chapter-level epigraph SMPdesign/beyond: Fix "Antov" typo, sorry, Anton! toyrcu: Add appendix-level epigraph whymb: Add appendix-level epigraph styleguide: Add the newline-after-sentence rule treewide: Update copyright notices treewide: Update Paul's email address defer: Add hazard-pointers link-counting disclaimer defer: Add route-benchmark data from large system defer: Add routing-example data from large system Bibliography update cpu: Add more details on modern CPU microarchitecture perfbook: Move \usepackage of titlesec to precede hyperref bib: Drag format kicking and screaming into the 21st century defer: Add description of 16-CPU system datastruct: Improve wording in Section 10.1 roadmap defer: Update perf_route for larger systems count: Update perf.sh for larger systems defer: Shorten hazptrtorture HAZPTR_STRESS_PIPE_LEN defer/rcuusage: Add plots of RCU-QSBR with non-initial rcu_head defer/rcuusage: Upgrade QQ 9.43 with collected data utilities/autodate: Mark released versions count: Fix "Exactitude" epigraph typo datastruct: Fix "Undertake" epigraph typo appendix/ack: Give credit for 21st-century scalable hardware appendix/ack: Credit Stamatis for bibliography work SeongJae Park (10): memorder: Fix typos debugging: Leave double dashes in description headings memorder: Fix two trivial typos toolsoftrade: Polish an ambiguous sentence defer/rcupai: Fix a typo: _pointer()() -> _pointer() defer/rcuapi: Consistently use dashes for 'RCU-protected' and 'update-side' defer: Fix a typo: processof -> process of defer: Use 'Go' instead of 'golang' defer/hazptr: Fix a typo: updatesa -> updates together: Fix a wrong number of lines Slavomir Kaslev (1): toolsoftrade: Fix code listing 4.22 in Chapter 4 Stamatis Karnouskos (5): typo correction Fix typos in FAQ-BUILD, SMPdesign, and glossary Typo fixes: "and and" and light-weight->lightweight treewide: Various typos s's --> s' Zhang, Kai (1): miscellaneous: Fix numerous typos .gitignore | 5 + .mailmap | 5 + CodeSamples/SMPdesign/Makefile | 3 +- CodeSamples/SMPdesign/deqtorture.h | 3 +- CodeSamples/SMPdesign/lockdeq.c | 3 +- CodeSamples/SMPdesign/lockhdeq.c | 14 +- CodeSamples/SMPdesign/locktdeq.c | 3 +- CodeSamples/SMPdesign/matmul.c | 3 +- CodeSamples/SMPdesign/matmul.reduce.sh | 3 +- CodeSamples/SMPdesign/matmul.sh | 3 +- CodeSamples/SMPdesign/matmul_block.c | 3 +- CodeSamples/SMPdesign/maze/Makefile | 3 +- CodeSamples/SMPdesign/maze/maze.c | 3 +- CodeSamples/SMPdesign/maze/maze.h | 3 +- CodeSamples/SMPdesign/maze/maze_2seq.c | 3 +- CodeSamples/SMPdesign/maze/maze_fg.c | 3 +- CodeSamples/SMPdesign/maze/maze_parallel.h | 3 +- CodeSamples/SMPdesign/maze/maze_part.c | 3 +- CodeSamples/SMPdesign/maze/maze_seq.c | 3 +- CodeSamples/SMPdesign/smpalloc.c | 11 +- CodeSamples/SMPdesign/smpalloc.sh | 3 +- CodeSamples/advsync/Makefile | 3 +- CodeSamples/advsync/q.c | 3 +- CodeSamples/advsync/q.h | 3 +- CodeSamples/advsync/queuetorture.h | 3 +- CodeSamples/advsync/singleq.c | 3 +- CodeSamples/advsync/singleq.h | 3 +- CodeSamples/advsync/special/timewritecache.c | 3 +- CodeSamples/advsync/special/writecacheflow.c | 3 +- CodeSamples/advsync/special/writeflowgroup.sh | 3 +- CodeSamples/advsync/special/writeflowtab.sh | 3 +- CodeSamples/advsync/wfenqueue.c | 3 +- CodeSamples/api-pthreads/QAfter/time.c | 19 +- CodeSamples/api-pthreads/QAfter/timelocked.c | 3 +- CodeSamples/api-pthreads/api-gcc.h | 8 +- CodeSamples/api-pthreads/api-pthreads.h | 16 +- CodeSamples/api-pthreads/include/dgettimeofday.c | 3 +- CodeSamples/arch-arm/arch-arm.h | 3 +- CodeSamples/arch-arm64/arch-arm64.h | 3 +- CodeSamples/arch-ppc64/arch-ppc64.h | 3 +- CodeSamples/arch-x86/arch-x86.h | 3 +- CodeSamples/count/Makefile | 3 +- CodeSamples/count/atomic.eps | 241 +- CodeSamples/count/atomic125.eps | 725 +- CodeSamples/count/atomic125.png | Bin 3337 -> 3406 bytes CodeSamples/count/atomic_hps.eps | 2679 + CodeSamples/count/atomic_hps.png | Bin 0 -> 3120 bytes CodeSamples/count/atomic_nehalem.eps | 587 +- CodeSamples/count/atomic_nehalem.png | Bin 3099 -> 3136 bytes CodeSamples/count/count_atomic.c | 3 +- CodeSamples/count/count_end.c | 11 +- CodeSamples/count/count_end_rcu.c | 80 +- CodeSamples/count/count_lim.c | 11 +- CodeSamples/count/count_lim_app.c | 3 +- CodeSamples/count/count_lim_atomic.c | 3 +- CodeSamples/count/count_lim_sig.c | 3 +- CodeSamples/count/count_limd.c | 3 +- CodeSamples/count/count_nonatomic.c | 3 +- CodeSamples/count/count_stack.c | 3 +- CodeSamples/count/count_stat.c | 3 +- CodeSamples/count/count_stat_atomic.c | 3 +- CodeSamples/count/count_stat_eventual.c | 7 +- CodeSamples/count/count_tstat.c | 13 +- CodeSamples/count/counttorture.h | 3 +- .../count/data/count_atomic:r.hps.2019.10.23a.dat | 31 + .../count/data/count_atomic:r.hps.2019.10.23a.raw | 31 + .../count/data/count_atomic:u.hps.2019.10.23a.dat | 31 + .../count/data/count_atomic:u.hps.2019.10.23a.raw | 31 + .../count/data/count_end:r.hps.2019.10.23a.dat | 31 + .../count/data/count_end:r.hps.2019.10.23a.raw | 31 + .../count/data/count_end:u.hps.2019.10.23a.dat | 31 + .../count/data/count_end:u.hps.2019.10.23a.raw | 31 + .../count/data/count_end_rcu:r.hps.2019.10.23a.dat | 31 + .../count/data/count_end_rcu:r.hps.2019.10.23a.raw | 31 + .../count/data/count_end_rcu:u.hps.2019.10.23a.dat | 31 + .../count/data/count_end_rcu:u.hps.2019.10.23a.raw | 31 + .../count/data/count_lim:r.hps.2019.10.23a.dat | 31 + .../count/data/count_lim:r.hps.2019.10.23a.raw | 31 + .../count/data/count_lim:u.hps.2019.10.23a.dat | 31 + .../count/data/count_lim:u.hps.2019.10.23a.raw | 31 + .../count/data/count_lim_app:r.hps.2019.10.23a.dat | 31 + .../count/data/count_lim_app:r.hps.2019.10.23a.raw | 31 + .../count/data/count_lim_app:u.hps.2019.10.23a.dat | 31 + .../count/data/count_lim_app:u.hps.2019.10.23a.raw | 31 + .../data/count_lim_atomic:r.hps.2019.10.23a.dat | 31 + .../data/count_lim_atomic:r.hps.2019.10.23a.raw | 31 + .../data/count_lim_atomic:u.hps.2019.10.23a.dat | 31 + .../data/count_lim_atomic:u.hps.2019.10.23a.raw | 31 + .../count/data/count_lim_sig:r.hps.2019.10.23a.dat | 31 + .../count/data/count_lim_sig:r.hps.2019.10.23a.raw | 31 + .../count/data/count_lim_sig:u.hps.2019.10.23a.dat | 31 + .../count/data/count_lim_sig:u.hps.2019.10.23a.raw | 31 + .../count/data/count_limd:r.hps.2019.10.23a.dat | 31 + .../count/data/count_limd:r.hps.2019.10.23a.raw | 31 + .../count/data/count_limd:u.hps.2019.10.23a.dat | 31 + .../count/data/count_limd:u.hps.2019.10.23a.raw | 31 + .../data/count_nonatomic:r.hps.2019.10.23a.dat | 31 + .../data/count_nonatomic:r.hps.2019.10.23a.raw | 31 + .../data/count_nonatomic:u.hps.2019.10.23a.dat | 31 + .../data/count_nonatomic:u.hps.2019.10.23a.raw | 31 + .../count/data/count_stat:r.hps.2019.10.23a.dat | 31 + .../count/data/count_stat:r.hps.2019.10.23a.raw | 31 + .../count/data/count_stat:u.hps.2019.10.23a.dat | 31 + .../count/data/count_stat:u.hps.2019.10.23a.raw | 31 + .../data/count_stat_atomic:r.hps.2019.10.23a.dat | 31 + .../data/count_stat_atomic:r.hps.2019.10.23a.raw | 31 + .../data/count_stat_atomic:u.hps.2019.10.23a.dat | 31 + .../data/count_stat_atomic:u.hps.2019.10.23a.raw | 31 + .../data/count_stat_eventual:r.hps.2019.10.23a.dat | 31 + .../data/count_stat_eventual:r.hps.2019.10.23a.raw | 31 + .../data/count_stat_eventual:u.hps.2019.10.23a.dat | 31 + .../data/count_stat_eventual:u.hps.2019.10.23a.raw | 31 + CodeSamples/count/data/cpuinfo.hps | 12096 ++++ CodeSamples/count/data/lscpu.hps | 32 + CodeSamples/count/data/perf.sh.hps.2019.10.23a.out | 67861 +++++++++++++++++++ CodeSamples/count/limtorture.h | 3 +- CodeSamples/count/perf.sh | 11 +- CodeSamples/count/plots.sh | 22 +- CodeSamples/count/reduce.sh | 5 +- CodeSamples/datastruct/Issaquah/Makefile | 3 +- CodeSamples/datastruct/Issaquah/existence.c | 3 +- CodeSamples/datastruct/Issaquah/existence.h | 3 +- CodeSamples/datastruct/Issaquah/existence_test.c | 3 +- CodeSamples/datastruct/Issaquah/perf.sh | 3 +- CodeSamples/datastruct/Issaquah/plots.sh | 5 +- CodeSamples/datastruct/Issaquah/reduce.sh | 3 +- CodeSamples/datastruct/Issaquah/spinlockmult.c | 3 +- CodeSamples/datastruct/Issaquah/spinlockmult.h | 3 +- CodeSamples/datastruct/Issaquah/tree.c | 3 +- CodeSamples/datastruct/Issaquah/tree.h | 3 +- CodeSamples/datastruct/Issaquah/treetorture.h | 3 +- CodeSamples/datastruct/Issaquah/treetorturetrace.h | 3 +- CodeSamples/datastruct/existence/.gitignore | 14 + CodeSamples/datastruct/existence/3hash1rot.sh | 35 + .../existence/3hash1rot.sh.2016.09.18a.out | 98 + .../existence/3hash1rot.sh.2016.09.18b.out | 196 + CodeSamples/datastruct/existence/3hashNrot.sh | 33 + .../existence/3hashNrot.sh.2016.09.18a.out | 448 + CodeSamples/datastruct/existence/Makefile | 83 + CodeSamples/datastruct/existence/existence.h | 286 + .../datastruct/existence/existence_3hash_test.c | 167 + .../existence_3hash_uperf.2016.09.16a.7cpu.dat | 33 + .../existence_3hash_uperf.2016.09.18b.dat | 8 + .../existence_3hash_uperf.2016.09.19a.dat | 8 + .../datastruct/existence/existence_3hash_uperf.c | 330 + .../existence/existence_3skiplist_test.c | 164 + .../existence_3skiplist_uperf.2016.09.18b.dat | 8 + .../existence/existence_3skiplist_uperf.c | 326 + CodeSamples/datastruct/existence/existence_test.c | 180 + CodeSamples/datastruct/existence/hash_exists.h | 168 + CodeSamples/datastruct/existence/hash_kaleid.h | 168 + CodeSamples/datastruct/existence/kaleidoscope.h | 263 + .../datastruct/existence/kaleidoscope_3hash_test.c | 140 + .../existence/kaleidoscope_3skiplist_test.c | 137 + .../existence/kaleidoscope_skiphash_test.c | 304 + .../datastruct/existence/kaleidoscope_test.c | 183 + CodeSamples/datastruct/existence/keyvalue.h | 35 + CodeSamples/datastruct/existence/procon.h | 207 + CodeSamples/datastruct/existence/procon_test.c | 93 + CodeSamples/datastruct/existence/reduce.sh | 79 + CodeSamples/datastruct/existence/reduceN.sh | 82 + CodeSamples/datastruct/existence/skiplist_exists.h | 166 + CodeSamples/datastruct/existence/skiplist_kaleid.h | 167 + CodeSamples/datastruct/hash/.gitignore | 1 + CodeSamples/datastruct/hash/Makefile | 8 +- CodeSamples/datastruct/hash/hash_bkt.c | 99 +- CodeSamples/datastruct/hash/hash_bkt_hazptr.c | 3 +- CodeSamples/datastruct/hash/hash_bkt_rcu.c | 36 +- CodeSamples/datastruct/hash/hash_global.c | 3 +- CodeSamples/datastruct/hash/hash_resize.c | 330 +- CodeSamples/datastruct/hash/hash_resize_s.c | 366 + CodeSamples/datastruct/hash/hashtorture.h | 175 +- CodeSamples/datastruct/hash/perf-resize.sh | 5 +- CodeSamples/datastruct/hash/perf.sh | 5 +- CodeSamples/datastruct/hash/plots-resize.sh | 5 +- CodeSamples/datastruct/hash/plots.sh | 5 +- CodeSamples/datastruct/hash/primes.mac | 5 +- CodeSamples/datastruct/hash/reduce-resize.sh | 5 +- CodeSamples/datastruct/hash/reduce.sh | 5 +- CodeSamples/datastruct/log/Makefile | 3 +- CodeSamples/datastruct/log/log.h | 3 +- CodeSamples/datastruct/log/log_glock.c | 3 +- CodeSamples/datastruct/log/logtorture.h | 3 +- CodeSamples/datastruct/skiplist/Makefile | 3 +- CodeSamples/datastruct/skiplist/skiplist.c | 3 +- CodeSamples/datastruct/skiplist/skiplist.h | 3 +- CodeSamples/datastruct/skiplist/skiplist_glock.c | 3 +- CodeSamples/datastruct/skiplist/skiplisttorture.h | 3 +- CodeSamples/debugging/datablows.sh | 1 + CodeSamples/debugging/plots.sh | 5 +- CodeSamples/defer/.gitignore | 1 + CodeSamples/defer/Makefile | 7 +- CodeSamples/defer/bug_rcu_dp.c | 3 +- CodeSamples/defer/bug_srcu_a.c | 3 +- CodeSamples/defer/data/hps.2019.12.02a/cpuinfo.hps | 12096 ++++ CodeSamples/defer/data/hps.2019.12.02a/lscpu.hps | 32 + .../defer/data/hps.2019.12.02a/perf-hazptr.eps | 2668 + .../defer/data/hps.2019.12.02a/perf-rcu-qsbr.eps | 3451 + .../defer/data/hps.2019.12.02a/perf-rcu.eps | 3186 + .../data/hps.2019.12.02a/perf-refcnt-logscale.eps | 2879 + .../defer/data/hps.2019.12.02a/perf-refcnt.eps | 2652 + .../defer/data/hps.2019.12.02a/perf-seqlock.eps | 2923 + .../hps.2019.12.02a/perf_route.sh.2019.12.02a.out | 16740 +++++ CodeSamples/defer/data/hps.2019.12.02a/plots.sh | 149 + .../route_hazptr.hps.2019.12.02a.dat | 31 + .../route_hazptr.hps.2019.12.02a.raw | 31 + .../hps.2019.12.02a/route_rcu.hps.2019.12.02a.dat | 31 + .../hps.2019.12.02a/route_rcu.hps.2019.12.02a.raw | 31 + .../route_rcu_qsbr.hps.2019.12.02a.dat | 31 + .../route_rcu_qsbr.hps.2019.12.02a.raw | 31 + .../route_refcnt.hps.2019.12.02a.dat | 31 + .../route_refcnt.hps.2019.12.02a.raw | 31 + .../hps.2019.12.02a/route_seq.hps.2019.12.02a.dat | 31 + .../hps.2019.12.02a/route_seq.hps.2019.12.02a.raw | 31 + .../route_seqlock.hps.2019.12.02a.dat | 31 + .../route_seqlock.hps.2019.12.02a.raw | 31 + .../defer/data/hps.2019.12.17a/perf-hazptr.eps | 2668 + .../defer/data/hps.2019.12.17a/perf-rcu-qsbr.eps | 3448 + .../defer/data/hps.2019.12.17a/perf-rcu.eps | 3187 + .../data/hps.2019.12.17a/perf-refcnt-logscale.eps | 2881 + .../defer/data/hps.2019.12.17a/perf-refcnt.eps | 2652 + .../defer/data/hps.2019.12.17a/perf-seqlock.eps | 2924 + .../perf_route.sh.hps.2019.12.17a.out | 16740 +++++ CodeSamples/defer/data/hps.2019.12.17a/plots.sh | 149 + .../route_hazptr.hps.2019.12.17a.dat | 31 + .../route_hazptr.hps.2019.12.17a.raw | 31 + .../hps.2019.12.17a/route_rcu.hps.2019.12.17a.dat | 31 + .../hps.2019.12.17a/route_rcu.hps.2019.12.17a.raw | 31 + .../route_rcu_qsbr.hps.2019.12.17a.dat | 31 + .../route_rcu_qsbr.hps.2019.12.17a.raw | 31 + .../route_refcnt.hps.2019.12.17a.dat | 31 + .../route_refcnt.hps.2019.12.17a.raw | 31 + .../hps.2019.12.17a/route_seq.hps.2019.12.17a.dat | 31 + .../hps.2019.12.17a/route_seq.hps.2019.12.17a.raw | 31 + .../route_seqlock.hps.2019.12.17a.dat | 31 + .../route_seqlock.hps.2019.12.17a.raw | 31 + CodeSamples/defer/data/paulmck.2016/plots.sh | 5 +- CodeSamples/defer/fakekernrcu.c | 3 +- CodeSamples/defer/fakekernrcu.h | 3 +- CodeSamples/defer/gettimestamp.c | 3 +- CodeSamples/defer/gettimestampmp.c | 3 +- CodeSamples/defer/hazptr.c | 93 +- CodeSamples/defer/hazptr.h | 43 +- CodeSamples/defer/hazptrtorture.h | 7 +- CodeSamples/defer/perf-hazptr.eps | 921 +- CodeSamples/defer/perf-rcu-qsbr-qq.eps | 3448 + CodeSamples/defer/perf-rcu-qsbr.eps | 1913 +- CodeSamples/defer/perf-rcu.eps | 1515 +- CodeSamples/defer/perf-refcnt-logscale.eps | 2879 + CodeSamples/defer/perf-refcnt.eps | 847 +- CodeSamples/defer/perf-seqlock.eps | 1214 +- CodeSamples/defer/perf.sh | 5 +- CodeSamples/defer/perf_route.sh | 9 +- CodeSamples/defer/ptxroute.c | 3 +- CodeSamples/defer/rcu.c | 37 +- CodeSamples/defer/rcu.h | 26 +- CodeSamples/defer/rcu64.c | 3 +- CodeSamples/defer/rcu64.h | 3 +- CodeSamples/defer/rcu64_atomicgp.c | 3 +- CodeSamples/defer/rcu64_atomicgp.h | 3 +- CodeSamples/defer/rcu_lock.c | 5 +- CodeSamples/defer/rcu_lock.h | 5 +- CodeSamples/defer/rcu_lock_percpu.c | 9 +- CodeSamples/defer/rcu_lock_percpu.h | 5 +- CodeSamples/defer/rcu_nest.c | 37 +- CodeSamples/defer/rcu_nest.h | 67 +- CodeSamples/defer/rcu_nest32.c | 3 +- CodeSamples/defer/rcu_nest32.h | 3 +- CodeSamples/defer/rcu_nest_qs.c | 3 +- CodeSamples/defer/rcu_nest_qs.h | 3 +- CodeSamples/defer/rcu_pointer.h | 3 +- CodeSamples/defer/rcu_qs.c | 34 +- CodeSamples/defer/rcu_qs.h | 47 +- CodeSamples/defer/rcu_rcg.c | 10 +- CodeSamples/defer/rcu_rcg.h | 9 +- CodeSamples/defer/rcu_rcpg.c | 39 +- CodeSamples/defer/rcu_rcpg.h | 33 +- CodeSamples/defer/rcu_rcpl.c | 30 +- CodeSamples/defer/rcu_rcpl.h | 9 +- CodeSamples/defer/rcu_rcpls.c | 36 +- CodeSamples/defer/rcu_rcpls.h | 11 +- CodeSamples/defer/rcu_sig.c | 3 +- CodeSamples/defer/rcu_sig.h | 3 +- CodeSamples/defer/rcu_ts.c | 3 +- CodeSamples/defer/rcu_ts.h | 3 +- CodeSamples/defer/rcutorture.h | 3 +- CodeSamples/defer/reduce_route.sh | 5 +- CodeSamples/defer/route_hazptr.c | 42 +- CodeSamples/defer/route_rcu.c | 39 +- CodeSamples/defer/route_refcnt.c | 19 +- CodeSamples/defer/route_seq.c | 21 +- CodeSamples/defer/route_seqlock.c | 17 +- CodeSamples/defer/routetorture.h | 3 +- CodeSamples/defer/seqlock.h | 15 +- CodeSamples/defer/seqlocktorture.c | 3 +- CodeSamples/defer/seqperf.sh | 5 +- CodeSamples/defer/singleton.c | 89 + CodeSamples/defer/srcu.c | 3 +- CodeSamples/defer/srcu.h | 3 +- .../formal/herd/C-LB+o-rl-rul-o+o-rl-rul-o.litmus | 24 + .../formal/herd/C-LB+rl-o-o-rul+rl-o-o-rul.litmus | 24 + .../herd/C-SB+o-rcusync-o+i-rl-o-o-rul.litmus | 23 + .../formal/herd/C-SB+o-rcusync-o+o-o.litmus | 21 + ...sync-o+o-rcusync-o+rl-o-o-rul+rl-o-o-rul.litmus | 40 + .../herd/C-SB+o-rcusync-o+o-rcusync-o.litmus | 22 + .../formal/herd/C-SB+o-rcusync-o+o-rl-o-rul.litmus | 23 + .../formal/herd/C-SB+o-rcusync-o+o-rl-rul-o.litmus | 23 + .../C-SB+o-rcusync-o+rl-o-o-rul+rl-o-o-rul.litmus | 32 + .../formal/herd/C-SB+o-rcusync-o+rl-o-o-rul.litmus | 23 + .../formal/herd/C-SB+o-rcusync-o+rl-o-rul-o.litmus | 23 + CodeSamples/formal/herd/Makefile | 2 +- CodeSamples/formal/litmus/C-2+2W+o-o+o-o.litmus | 10 +- .../formal/litmus/C-2+2W+o-wmb-o+o-wmb-o.litmus | 12 +- .../formal/litmus/C-CCIRIW+o+o+o-o+o-o.litmus | 13 +- .../formal/litmus/C-ISA2+o-r+a-r+a-r+a-o.litmus | 2 +- .../litmus/C-LB+a-o+o-data-o+o-data-o.litmus | 10 +- .../formal/litmus/C-LB+a-r+a-r+a-r+a-r.litmus | 10 +- .../formal/litmus/C-LB+o-cgt-o+o-cgt-o.litmus | 10 +- .../litmus/C-LB+o-data-o+o-data-o+o-data-o.litmus | 10 +- CodeSamples/formal/litmus/C-LB+o-o+o-o.litmus | 12 +- CodeSamples/formal/litmus/C-LB+o-r+a-o.litmus | 12 +- CodeSamples/formal/litmus/C-LB+o-r+o-ctrl-o.litmus | 17 +- CodeSamples/formal/litmus/C-LB+o-r+o-data-o.litmus | 14 +- CodeSamples/formal/litmus/C-MP+o-o+o-rmb-o.litmus | 11 +- CodeSamples/formal/litmus/C-MP+o-r+o-ctrl-o.litmus | 15 +- .../formal/litmus/C-MP+o-wmb-o+o-addr-o.litmus | 24 +- CodeSamples/formal/litmus/C-MP+o-wmb-o+o-o.litmus | 12 +- .../formal/litmus/C-MP+o-wmb-o+o-rmb-o.litmus | 12 +- .../formal/litmus/C-MP-OMCA+o-o-o+o-rmb-o.litmus | 25 +- .../formal/litmus/C-R+o-wmb-o+o-mb-o.litmus | 14 +- .../formal/litmus/C-S+o-wmb-o+o-addr-o.litmus | 20 +- .../formal/litmus/C-SB+o-mb-o+o-mb-o.litmus | 22 +- CodeSamples/formal/litmus/C-SB+o-o+o-o.litmus | 19 +- .../formal/litmus/C-W+RWC+o-mb-o+a-o+o-mb-o.litmus | 10 +- .../formal/litmus/C-W+RWC+o-r+a-o+o-mb-o.litmus | 26 +- .../formal/litmus/C-WRC+o+o-data-o+o-rmb-o.litmus | 25 +- CodeSamples/formal/litmus/C-WRC+o+o-r+a-o.litmus | 18 +- .../formal/litmus/C-WWC+o-cgt-o+o-cgt-o+o.litmus | 10 +- .../formal/litmus/C-Z6.2+o-r+a-o+o-mb-o.litmus | 10 +- .../formal/litmus/C-Z6.2+o-r+a-r+a-r+a-o.litmus | 12 +- CodeSamples/formal/litmus/C-cmpxchg.litmus | 24 + CodeSamples/formal/litmus/api.h | 2 +- CodeSamples/formal/promela/atomicincrement.spin | 2 + .../formal/promela/atomicincrement.spin.lst | 28 + .../formal/promela/dyntick/dyntickRCU-base-s.spin | 40 +- .../promela/dyntick/dyntickRCU-base-sl-busted.spin | 38 +- .../dyntickRCU-base-sl-busted.spin.trail.txt | 144 +- .../formal/promela/dyntick/dyntickRCU-base-sl.spin | 20 +- .../formal/promela/dyntick/dyntickRCU-base.spin | 49 +- .../promela/dyntick/dyntickRCU-irq-nmi-ssl.spin | 63 +- .../formal/promela/dyntick/dyntickRCU-irq-ssl.spin | 44 +- .../promela/dyntick/dyntickRCU-irqnn-ssl.spin | 94 +- CodeSamples/formal/promela/dyntick/runspin.sh | 3 +- CodeSamples/formal/promela/increment.spin | 46 +- CodeSamples/formal/promela/increment.spin.lst | 28 + .../formal/promela/increment.spin.trail.lst | 42 + CodeSamples/formal/promela/lock.h | 16 +- CodeSamples/formal/promela/lock.spin | 46 +- CodeSamples/formal/promela/lock.spin.lst | 29 + CodeSamples/formal/promela/qrcu.spin | 95 +- CodeSamples/formal/promela/qrcu.spin.33ma.lst | 37 + .../formal/promela/qrcu.spin.col-ma.diff.lst | 48 + CodeSamples/future/HTMovf.c | 3 +- CodeSamples/future/HTMovfMC.c | 3 +- CodeSamples/future/HTMovfMCNK.bash | 5 +- CodeSamples/future/HTMovfNK.bash | 5 +- CodeSamples/future/Makefile | 3 +- CodeSamples/future/plots.sh | 5 +- CodeSamples/intro/initrace.c | 3 +- CodeSamples/intro/initraceperf.c | 3 +- CodeSamples/intro/lockinc.c | 3 +- CodeSamples/intro/nakedinc.c | 3 +- CodeSamples/intro/perthreadinc.c | 3 +- CodeSamples/intro/threadcreate.c | 3 +- CodeSamples/lib/random.c | 3 +- CodeSamples/lib/random.h | 3 +- CodeSamples/linux/common.h | 3 +- CodeSamples/locking/bakery.c | 3 +- CodeSamples/locking/locked_list.c | 9 +- CodeSamples/locking/lockwakelatency.c | 3 +- CodeSamples/locking/xchglock.c | 3 +- CodeSamples/toolsoftrade/Makefile | 3 +- CodeSamples/toolsoftrade/forkexec.sh | 5 +- CodeSamples/toolsoftrade/forkjoin.c | 3 +- CodeSamples/toolsoftrade/forkjoinperf.c | 3 +- CodeSamples/toolsoftrade/forkjoinvar.c | 5 +- CodeSamples/toolsoftrade/lock.c | 3 +- CodeSamples/toolsoftrade/mytrue.c | 3 +- CodeSamples/toolsoftrade/parallel.sh | 5 +- CodeSamples/toolsoftrade/pcreate.c | 5 +- CodeSamples/toolsoftrade/plots.sh | 5 +- CodeSamples/toolsoftrade/rwlockscale.c | 5 +- CodeSamples/toolsoftrade/rwlockscale.sh | 5 +- CodeSamples/toolsoftrade/rwlockscalereduce.sh | 5 +- FAQ-BUILD.txt | 160 +- Makefile | 140 +- SMPdesign/SMPdesign.tex | 52 +- SMPdesign/beyond.tex | 38 +- SMPdesign/criteria.tex | 4 + SMPdesign/partexercises.tex | 27 +- SMPdesign/plots.sh | 5 +- advsync/advsync.tex | 138 +- advsync/rcu.tex | 10 +- advsync/rt-regimes.svg | 40 +- advsync/rt.tex | 432 +- appendix/ack/ack.tex | 58 +- appendix/appendix.tex | 9 +- appendix/questions/after.tex | 134 +- appendix/questions/concurrentparallel.tex | 1 + appendix/questions/questions.tex | 2 + appendix/questions/time.tex | 3 +- appendix/styleguide/samplecodesnippet.c | 2 +- appendix/styleguide/styleguide.tex | 344 +- appendix/toyrcu/toyrcu.tex | 1007 +- appendix/whymb/whymemorybarriers.tex | 292 +- bib/NP.bib | 407 +- bib/OSS.bib | 1719 +- bib/QC.bib | 2349 +- bib/RCU.bib | 5530 +- bib/RCUuses.bib | 37 +- bib/TM.bib | 2140 +- bib/WFS.bib | 887 +- bib/energy.bib | 301 +- bib/hw.bib | 1515 +- bib/maze.bib | 123 +- bib/os.bib | 2614 +- bib/parallelsys.bib | 525 +- bib/patterns.bib | 105 +- bib/perfmeas.bib | 283 +- bib/realtime.bib | 1190 +- bib/refs.bib | 2628 +- bib/search.bib | 55 +- bib/standards.bib | 41 +- bib/swtools.bib | 2265 +- bib/syncrefs.bib | 3205 +- count/count.tex | 374 +- cpu/cpu.tex | 1 + cpu/hwfreelunch.tex | 7 + cpu/microarch.svg | 581 + cpu/overheads.tex | 7 +- cpu/overview.tex | 91 +- cpu/swdesign.tex | 7 + datastruct/datastruct.tex | 1031 +- datastruct/gethashplots.sh | 3 +- datastruct/hashdiagram.fig | 103 +- debugging/debugging.tex | 361 +- defer/Linux_hlist.fig | 54 - defer/Linux_hlist.svg | 447 + defer/Linux_list.fig | 66 - defer/Linux_list.svg | 453 + defer/Linux_list_abbr.fig | 26 - defer/Linux_list_abbr.svg | 283 + defer/QSBRGracePeriod.fig | 60 - defer/QSBRGracePeriod.svg | 359 + defer/RCUGPordering.svg | 538 + defer/RCUGuaranteeFwd.svg | 438 + defer/RCUGuaranteeMid.svg | 488 + defer/RCUGuaranteeRev.svg | 449 + defer/RCUListDeleteClassic.fig | 135 - defer/RCUListDeleteClassic.svg | 580 + defer/RCUListInsertClassic.svg | 452 +- defer/RCUbarrierOrdering.svg | 542 + defer/defer.tex | 9 +- defer/hazptr.tex | 396 +- defer/linux-RCU.eps | 928 + defer/multver.svg | 1355 + defer/pubsub.svg | 656 + defer/rcu.tex | 25 +- defer/rcuapi.tex | 1160 +- defer/rcuexercises.tex | 3 +- defer/rcufundamental.tex | 1095 +- defer/rcuintro.tex | 654 +- defer/rcurelated.tex | 6 +- defer/rcuusage.tex | 118 +- defer/refcnt.tex | 89 +- defer/seqlock.tex | 33 +- defer/updates.tex | 3 +- defer/whichtochoose.tex | 312 +- easy/easy.tex | 19 +- formal/axiomatic.tex | 102 +- formal/dyntickrcu.tex | 1831 +- formal/formal.tex | 5 +- formal/ppcmem.tex | 225 +- formal/sat.tex | 1 + formal/spinhint.tex | 1117 +- formal/stateless.tex | 1 + future/cpu.tex | 62 +- future/formalregress.tex | 42 +- future/future.tex | 5 + future/htm.tex | 275 +- future/tm.tex | 74 +- glossary.tex | 7 +- howto/howto.tex | 25 +- intro/.gitignore | 1 - intro/PPGrelation.fig | 48 - intro/PPGrelation.svg | 630 + intro/intro.tex | 29 +- legal.tex | 3 +- locking/locking-existence.tex | 8 +- locking/locking.tex | 69 +- memalloc/memalloc.tex | 1 + memorder/RCU1G2R.svg | 709 + memorder/RCU2G2R.svg | 885 + memorder/memorder.tex | 3454 +- origpub.sty | 5 +- owned/owned.tex | 25 +- pagegroup | 6 + perfbook.tex | 118 +- pfhyphex.tex | 1 + qqz.sty | 5 +- todo.txt | 8 + together/applyrcu.tex | 384 +- together/count.tex | 26 +- together/hash.tex | 10 +- together/refcnt.tex | 373 +- together/together.tex | 12 +- toolsoftrade/toolsoftrade.tex | 414 +- utilities/autodate.sh | 9 +- utilities/c2latex.sh | 5 +- utilities/c2qqz.sh | 5 +- utilities/checkfcv.pl | 78 + utilities/cleanpdf.sh | 3 +- utilities/datablows.sh | 65 +- utilities/epigraph.sh | 34 + utilities/eps2pdf.sh | 3 +- utilities/extpagegroup.pl | 37 + utilities/extractClatex.sh | 5 +- utilities/extractcontrib.sh | 6 +- utilities/extractorigpub.sh | 6 +- utilities/extractqqz.c | 3 +- utilities/extractqqz.sh | 6 +- utilities/fcvextract.pl | 118 +- utilities/fixanepsfonts-urwps.sh | 3 +- utilities/fixanepsfonts.sh | 3 +- utilities/fixdotfonts.sh | 3 +- utilities/fixfigfonts.sh | 3 +- utilities/fixfonts-urwps.sh | 3 +- utilities/fixfonts.sh | 3 +- utilities/gen_snippet_d.pl | 20 +- utilities/gitextractcontrib.sh | 5 +- utilities/latex2c.sh | 5 +- utilities/mpostcheck.sh | 16 +- utilities/prep4html.sh | 5 +- utilities/qqz2c.sh | 3 +- utilities/runfirstlatex.sh | 42 +- utilities/runlatex.sh | 15 +- utilities/sortdata.sh | 5 +- utilities/synctex-forward.sh | 91 + utilities/toarxiv.sh | 3 +- 549 files changed, 219793 insertions(+), 26863 deletions(-) create mode 100644 .mailmap create mode 100644 CodeSamples/count/atomic_hps.eps create mode 100644 CodeSamples/count/atomic_hps.png create mode 100644 CodeSamples/count/data/count_atomic:r.hps.2019.10.23a.dat create mode 100644 CodeSamples/count/data/count_atomic:r.hps.2019.10.23a.raw create mode 100644 CodeSamples/count/data/count_atomic:u.hps.2019.10.23a.dat create mode 100644 CodeSamples/count/data/count_atomic:u.hps.2019.10.23a.raw create mode 100644 CodeSamples/count/data/count_end:r.hps.2019.10.23a.dat create mode 100644 CodeSamples/count/data/count_end:r.hps.2019.10.23a.raw create mode 100644 CodeSamples/count/data/count_end:u.hps.2019.10.23a.dat create mode 100644 CodeSamples/count/data/count_end:u.hps.2019.10.23a.raw create mode 100644 CodeSamples/count/data/count_end_rcu:r.hps.2019.10.23a.dat create mode 100644 CodeSamples/count/data/count_end_rcu:r.hps.2019.10.23a.raw create mode 100644 CodeSamples/count/data/count_end_rcu:u.hps.2019.10.23a.dat create mode 100644 CodeSamples/count/data/count_end_rcu:u.hps.2019.10.23a.raw create mode 100644 CodeSamples/count/data/count_lim:r.hps.2019.10.23a.dat create mode 100644 CodeSamples/count/data/count_lim:r.hps.2019.10.23a.raw create mode 100644 CodeSamples/count/data/count_lim:u.hps.2019.10.23a.dat create mode 100644 CodeSamples/count/data/count_lim:u.hps.2019.10.23a.raw create mode 100644 CodeSamples/count/data/count_lim_app:r.hps.2019.10.23a.dat create mode 100644 CodeSamples/count/data/count_lim_app:r.hps.2019.10.23a.raw create mode 100644 CodeSamples/count/data/count_lim_app:u.hps.2019.10.23a.dat create mode 100644 CodeSamples/count/data/count_lim_app:u.hps.2019.10.23a.raw create mode 100644 CodeSamples/count/data/count_lim_atomic:r.hps.2019.10.23a.dat create mode 100644 CodeSamples/count/data/count_lim_atomic:r.hps.2019.10.23a.raw create mode 100644 CodeSamples/count/data/count_lim_atomic:u.hps.2019.10.23a.dat create mode 100644 CodeSamples/count/data/count_lim_atomic:u.hps.2019.10.23a.raw create mode 100644 CodeSamples/count/data/count_lim_sig:r.hps.2019.10.23a.dat create mode 100644 CodeSamples/count/data/count_lim_sig:r.hps.2019.10.23a.raw create mode 100644 CodeSamples/count/data/count_lim_sig:u.hps.2019.10.23a.dat create mode 100644 CodeSamples/count/data/count_lim_sig:u.hps.2019.10.23a.raw create mode 100644 CodeSamples/count/data/count_limd:r.hps.2019.10.23a.dat create mode 100644 CodeSamples/count/data/count_limd:r.hps.2019.10.23a.raw create mode 100644 CodeSamples/count/data/count_limd:u.hps.2019.10.23a.dat create mode 100644 CodeSamples/count/data/count_limd:u.hps.2019.10.23a.raw create mode 100644 CodeSamples/count/data/count_nonatomic:r.hps.2019.10.23a.dat create mode 100644 CodeSamples/count/data/count_nonatomic:r.hps.2019.10.23a.raw create mode 100644 CodeSamples/count/data/count_nonatomic:u.hps.2019.10.23a.dat create mode 100644 CodeSamples/count/data/count_nonatomic:u.hps.2019.10.23a.raw create mode 100644 CodeSamples/count/data/count_stat:r.hps.2019.10.23a.dat create mode 100644 CodeSamples/count/data/count_stat:r.hps.2019.10.23a.raw create mode 100644 CodeSamples/count/data/count_stat:u.hps.2019.10.23a.dat create mode 100644 CodeSamples/count/data/count_stat:u.hps.2019.10.23a.raw create mode 100644 CodeSamples/count/data/count_stat_atomic:r.hps.2019.10.23a.dat create mode 100644 CodeSamples/count/data/count_stat_atomic:r.hps.2019.10.23a.raw create mode 100644 CodeSamples/count/data/count_stat_atomic:u.hps.2019.10.23a.dat create mode 100644 CodeSamples/count/data/count_stat_atomic:u.hps.2019.10.23a.raw create mode 100644 CodeSamples/count/data/count_stat_eventual:r.hps.2019.10.23a.dat create mode 100644 CodeSamples/count/data/count_stat_eventual:r.hps.2019.10.23a.raw create mode 100644 CodeSamples/count/data/count_stat_eventual:u.hps.2019.10.23a.dat create mode 100644 CodeSamples/count/data/count_stat_eventual:u.hps.2019.10.23a.raw create mode 100644 CodeSamples/count/data/cpuinfo.hps create mode 100644 CodeSamples/count/data/lscpu.hps create mode 100644 CodeSamples/count/data/perf.sh.hps.2019.10.23a.out create mode 100644 CodeSamples/datastruct/existence/.gitignore create mode 100644 CodeSamples/datastruct/existence/3hash1rot.sh create mode 100644 CodeSamples/datastruct/existence/3hash1rot.sh.2016.09.18a.out create mode 100644 CodeSamples/datastruct/existence/3hash1rot.sh.2016.09.18b.out create mode 100644 CodeSamples/datastruct/existence/3hashNrot.sh create mode 100644 CodeSamples/datastruct/existence/3hashNrot.sh.2016.09.18a.out create mode 100644 CodeSamples/datastruct/existence/Makefile create mode 100644 CodeSamples/datastruct/existence/existence.h create mode 100644 CodeSamples/datastruct/existence/existence_3hash_test.c create mode 100644 CodeSamples/datastruct/existence/existence_3hash_uperf.2016.09.16a.7cpu.dat create mode 100644 CodeSamples/datastruct/existence/existence_3hash_uperf.2016.09.18b.dat create mode 100644 CodeSamples/datastruct/existence/existence_3hash_uperf.2016.09.19a.dat create mode 100644 CodeSamples/datastruct/existence/existence_3hash_uperf.c create mode 100644 CodeSamples/datastruct/existence/existence_3skiplist_test.c create mode 100644 CodeSamples/datastruct/existence/existence_3skiplist_uperf.2016.09.18b.dat create mode 100644 CodeSamples/datastruct/existence/existence_3skiplist_uperf.c create mode 100644 CodeSamples/datastruct/existence/existence_test.c create mode 100644 CodeSamples/datastruct/existence/hash_exists.h create mode 100644 CodeSamples/datastruct/existence/hash_kaleid.h create mode 100644 CodeSamples/datastruct/existence/kaleidoscope.h create mode 100644 CodeSamples/datastruct/existence/kaleidoscope_3hash_test.c create mode 100644 CodeSamples/datastruct/existence/kaleidoscope_3skiplist_test.c create mode 100644 CodeSamples/datastruct/existence/kaleidoscope_skiphash_test.c create mode 100644 CodeSamples/datastruct/existence/kaleidoscope_test.c create mode 100644 CodeSamples/datastruct/existence/keyvalue.h create mode 100644 CodeSamples/datastruct/existence/procon.h create mode 100644 CodeSamples/datastruct/existence/procon_test.c create mode 100644 CodeSamples/datastruct/existence/reduce.sh create mode 100644 CodeSamples/datastruct/existence/reduceN.sh create mode 100644 CodeSamples/datastruct/existence/skiplist_exists.h create mode 100644 CodeSamples/datastruct/existence/skiplist_kaleid.h create mode 100644 CodeSamples/datastruct/hash/hash_resize_s.c create mode 120000 CodeSamples/debugging/datablows.sh create mode 100644 CodeSamples/defer/data/hps.2019.12.02a/cpuinfo.hps create mode 100644 CodeSamples/defer/data/hps.2019.12.02a/lscpu.hps create mode 100644 CodeSamples/defer/data/hps.2019.12.02a/perf-hazptr.eps create mode 100644 CodeSamples/defer/data/hps.2019.12.02a/perf-rcu-qsbr.eps create mode 100644 CodeSamples/defer/data/hps.2019.12.02a/perf-rcu.eps create mode 100644 CodeSamples/defer/data/hps.2019.12.02a/perf-refcnt-logscale.eps create mode 100644 CodeSamples/defer/data/hps.2019.12.02a/perf-refcnt.eps create mode 100644 CodeSamples/defer/data/hps.2019.12.02a/perf-seqlock.eps create mode 100644 CodeSamples/defer/data/hps.2019.12.02a/perf_route.sh.2019.12.02a.out create mode 100644 CodeSamples/defer/data/hps.2019.12.02a/plots.sh create mode 100644 CodeSamples/defer/data/hps.2019.12.02a/route_hazptr.hps.2019.12.02a.dat create mode 100644 CodeSamples/defer/data/hps.2019.12.02a/route_hazptr.hps.2019.12.02a.raw create mode 100644 CodeSamples/defer/data/hps.2019.12.02a/route_rcu.hps.2019.12.02a.dat create mode 100644 CodeSamples/defer/data/hps.2019.12.02a/route_rcu.hps.2019.12.02a.raw create mode 100644 CodeSamples/defer/data/hps.2019.12.02a/route_rcu_qsbr.hps.2019.12.02a.dat create mode 100644 CodeSamples/defer/data/hps.2019.12.02a/route_rcu_qsbr.hps.2019.12.02a.raw create mode 100644 CodeSamples/defer/data/hps.2019.12.02a/route_refcnt.hps.2019.12.02a.dat create mode 100644 CodeSamples/defer/data/hps.2019.12.02a/route_refcnt.hps.2019.12.02a.raw create mode 100644 CodeSamples/defer/data/hps.2019.12.02a/route_seq.hps.2019.12.02a.dat create mode 100644 CodeSamples/defer/data/hps.2019.12.02a/route_seq.hps.2019.12.02a.raw create mode 100644 CodeSamples/defer/data/hps.2019.12.02a/route_seqlock.hps.2019.12.02a.dat create mode 100644 CodeSamples/defer/data/hps.2019.12.02a/route_seqlock.hps.2019.12.02a.raw create mode 100644 CodeSamples/defer/data/hps.2019.12.17a/perf-hazptr.eps create mode 100644 CodeSamples/defer/data/hps.2019.12.17a/perf-rcu-qsbr.eps create mode 100644 CodeSamples/defer/data/hps.2019.12.17a/perf-rcu.eps create mode 100644 CodeSamples/defer/data/hps.2019.12.17a/perf-refcnt-logscale.eps create mode 100644 CodeSamples/defer/data/hps.2019.12.17a/perf-refcnt.eps create mode 100644 CodeSamples/defer/data/hps.2019.12.17a/perf-seqlock.eps create mode 100644 CodeSamples/defer/data/hps.2019.12.17a/perf_route.sh.hps.2019.12.17a.out create mode 100644 CodeSamples/defer/data/hps.2019.12.17a/plots.sh create mode 100644 CodeSamples/defer/data/hps.2019.12.17a/route_hazptr.hps.2019.12.17a.dat create mode 100644 CodeSamples/defer/data/hps.2019.12.17a/route_hazptr.hps.2019.12.17a.raw create mode 100644 CodeSamples/defer/data/hps.2019.12.17a/route_rcu.hps.2019.12.17a.dat create mode 100644 CodeSamples/defer/data/hps.2019.12.17a/route_rcu.hps.2019.12.17a.raw create mode 100644 CodeSamples/defer/data/hps.2019.12.17a/route_rcu_qsbr.hps.2019.12.17a.dat create mode 100644 CodeSamples/defer/data/hps.2019.12.17a/route_rcu_qsbr.hps.2019.12.17a.raw create mode 100644 CodeSamples/defer/data/hps.2019.12.17a/route_refcnt.hps.2019.12.17a.dat create mode 100644 CodeSamples/defer/data/hps.2019.12.17a/route_refcnt.hps.2019.12.17a.raw create mode 100644 CodeSamples/defer/data/hps.2019.12.17a/route_seq.hps.2019.12.17a.dat create mode 100644 CodeSamples/defer/data/hps.2019.12.17a/route_seq.hps.2019.12.17a.raw create mode 100644 CodeSamples/defer/data/hps.2019.12.17a/route_seqlock.hps.2019.12.17a.dat create mode 100644 CodeSamples/defer/data/hps.2019.12.17a/route_seqlock.hps.2019.12.17a.raw create mode 100644 CodeSamples/defer/perf-rcu-qsbr-qq.eps create mode 100644 CodeSamples/defer/perf-refcnt-logscale.eps create mode 100644 CodeSamples/defer/singleton.c create mode 100644 CodeSamples/formal/herd/C-LB+o-rl-rul-o+o-rl-rul-o.litmus create mode 100644 CodeSamples/formal/herd/C-LB+rl-o-o-rul+rl-o-o-rul.litmus create mode 100644 CodeSamples/formal/herd/C-SB+o-rcusync-o+i-rl-o-o-rul.litmus create mode 100644 CodeSamples/formal/herd/C-SB+o-rcusync-o+o-o.litmus create mode 100644 CodeSamples/formal/herd/C-SB+o-rcusync-o+o-rcusync-o+rl-o-o-rul+rl-o-o-rul.litmus create mode 100644 CodeSamples/formal/herd/C-SB+o-rcusync-o+o-rcusync-o.litmus create mode 100644 CodeSamples/formal/herd/C-SB+o-rcusync-o+o-rl-o-rul.litmus create mode 100644 CodeSamples/formal/herd/C-SB+o-rcusync-o+o-rl-rul-o.litmus create mode 100644 CodeSamples/formal/herd/C-SB+o-rcusync-o+rl-o-o-rul+rl-o-o-rul.litmus create mode 100644 CodeSamples/formal/herd/C-SB+o-rcusync-o+rl-o-o-rul.litmus create mode 100644 CodeSamples/formal/herd/C-SB+o-rcusync-o+rl-o-rul-o.litmus create mode 100644 CodeSamples/formal/litmus/C-cmpxchg.litmus create mode 100644 CodeSamples/formal/promela/atomicincrement.spin.lst create mode 100644 CodeSamples/formal/promela/increment.spin.lst create mode 100644 CodeSamples/formal/promela/increment.spin.trail.lst create mode 100644 CodeSamples/formal/promela/lock.spin.lst create mode 100644 CodeSamples/formal/promela/qrcu.spin.33ma.lst create mode 100644 CodeSamples/formal/promela/qrcu.spin.col-ma.diff.lst create mode 100644 cpu/microarch.svg delete mode 100644 defer/Linux_hlist.fig create mode 100644 defer/Linux_hlist.svg delete mode 100644 defer/Linux_list.fig create mode 100644 defer/Linux_list.svg delete mode 100644 defer/Linux_list_abbr.fig create mode 100644 defer/Linux_list_abbr.svg delete mode 100644 defer/QSBRGracePeriod.fig create mode 100644 defer/QSBRGracePeriod.svg create mode 100644 defer/RCUGPordering.svg create mode 100644 defer/RCUGuaranteeFwd.svg create mode 100644 defer/RCUGuaranteeMid.svg create mode 100644 defer/RCUGuaranteeRev.svg delete mode 100644 defer/RCUListDeleteClassic.fig create mode 100644 defer/RCUListDeleteClassic.svg create mode 100644 defer/RCUbarrierOrdering.svg create mode 100644 defer/linux-RCU.eps create mode 100644 defer/multver.svg create mode 100644 defer/pubsub.svg delete mode 100644 intro/PPGrelation.fig create mode 100644 intro/PPGrelation.svg create mode 100644 memorder/RCU1G2R.svg create mode 100644 memorder/RCU2G2R.svg create mode 100644 pagegroup create mode 100755 utilities/checkfcv.pl create mode 100644 utilities/epigraph.sh create mode 100755 utilities/extpagegroup.pl create mode 100755 utilities/synctex-forward.sh