Akira Yokosawa (88): SMPdesign: Use subscript in lockdeqhash figures SMPdesign: Fix number of elements regarding Figure 6.9 Trial use of extdash package with shortcuts option formal/ppcmem: Avoid break-line after 'lines' in source Add \nbco{} command for code snippet without line break Use \ldots for ellipsis Trial of replacing hyphens of negative values with minus signs Makefile: Add .fig -> .eps rule Move unused .fig and .eps files to .unused directory Remove .eps files whose sources are .fig files Update and create .gitignore files FAQ-BUILD.txt: Add 'fig2ps' as necessary package on Ubuntu Makefile: Add availability check of 'fig2eps' and 'dot' commands Some more hyphenation of compound words Trial of replacing hyphens with en-dashes for number dohyphen2endash.sh: Add check of git status dohyphen2endash.sh: Use mktemp to create temp file Makefile: Remove empty target 'extraction' treewide: Use nbsp after 'Lines' and 'lines' appendix/rcuimpl: Adjust plurality of verb locking: Typo fixes More hyphenation of long compound word advsync: Additional use of em dash toolsoftrade: Typo fix toyrcu: Enclose 'verbbox' within 'figure' Add scripts to check 'verbbox' env usage treewide: Enclose 'verbbox' within 'figure' hyphen2endash.sh: Add substitution patterns hyphen2endash.sh: Merge subst patterns Update book.cls book.cls: Fix indent after \chapter in twocolumn Makefile: Add localized 'book.cls' to dependency epigraph: Use \epigraphhead{} epigraph: Increase width a little Tweak page layout of onecolumn rt: Add reference to 'CPU Isolation' Figure count: Enclose 'REQACK' in \mbox{} Rewrite custom margins for hardcover Tweak oddside and evenside margins of onecolumn Disable 'microtype' in code snippets Makefile: Use implicit rules for various layout options Makefile: Use more automatic variables Makefile: Use secondary expansion Separate font package declarations Adjust scale of sans serif font Makefile: Add targets for alternative monospace fonts Makefile: Add target '1csf' (one-column sans serif) Redefine \path command for sans serif font Makefile: Add notice of mathastext version for 1csf formal: Replace 'article' with 'section' runlatex.sh: Add a round for possible bib update Makefile: Move $(BIBSOURCES) to dependency of .aux target bib: Add missing punctuation in 'url' field bib: Fix errors around \url{} command bib: Remove nested \url{} in 'url' field bib: Add missing \url{} command Load 'url' package with 'hyphens' option bib/os: Enclose url of 'BenjaminGamsa95a' in \url{} command bib: Remove domain part in doi fields formal: Promote \OriginallyPublieshed macro to Chapter appendix/ack: Adjust labeling in 'Reviewers' section treewide: Adjust labeling of 'formal' Abort build if 'mpost' is present in sources advsync/memorybarriers: Use consistent quotation marks advsync/memorybarriers: Fix typo (READ_ONCE -> WRITE_ONCE) advsync/memorybarriers: Fix trivial typo advsync/memorybarriers: Followup fix of quotation marks bib/realtime: Replace 'Available: ... [Viewed ...]' with 'URL: ...' bib/realtime: Update url of 'BillInmon2007a' bib/realtime: Update url of 'KelvinNilsen2007' bib/realtime: Replace url of 'PaulEMcKenney2008OLS' bib/realtime: Update url of 'SunMicrosystems2008RTSJavaGC' bib/realtime: Replace url with doi for 'RobertBerry2008IBMSysJ' bib/realtime: Update url of 'StephenShankland20Sep2006' bib/realtime: Mark broken urls as such bib/realtime: Update 'lastchecked' fields Localize alpha.bst Customize alpha.bst by 'urlbst' and rename as alphapf.bst alphapf.bst: Reorder 'note' field of 'unpublished' entry Use 'alphapf' bibliographystyle instead of 'alpha' advsync/memorybarriers: Use non-confusing variable names advsync/memorybarriers: Fix trivial typo Makefile: Fix .bbl dependency Enable 'inlinelinks' option of alphapf.bst for 1c layout toolsoftrade: Fix line order in latex source Prevent line-break of '__' within \co{} macro toolsoftrade: Trivial typo fixes howto: Embed mailto: link into perfbook list address Balbir Singh (1): Memory barrier -- fix sample code Boqun Feng (3): skiplist: Add a missing rcu_dereference() skiplist: Avoid double-freeing the lock of prev in skiplist_lock() skiplist: Avoid self-deadlock in skiplist_insert_lock() Mike Rapoport (1): toolsoftrade: minor grammar correction Paul E. McKenney (136): Update How-To text to match current DCO. A bit of wordsmithing in the introduction Expand on the answer to QQ about eventually consistent not being free Updated "PowerPC storage model and AIX programming" article Adjust for update Michael Lyons citation Initial commit: .gitignore Add URLs of alternative tree implementations Initial commit of code Lookups are limping Cap random_level() to SL_MAX_LEVELS, ditch unneeded argument Test additional functions Make update_dump() print the full array Add skiplist_init() and fix SL_MAX_LEVELS checks Add skiplist insertion testing Fix insertion-time pointer manipulation Add test for deletion Fix format of initial skiplist Different shape skiplist to force more frequent back-updates Fix deletion-element-address check Fix random_level() value saturation yet again... Fix massive breakage in skiplist_delete() locking Repeat insert-delete cycle a few times Add a todo list for longer-term items Try a different shape of skiplist Add a crude skiplist checker Use the shiny new skiplist checker Add toplevel check to skiplist_fsck() Fix hand-make skiplist layout Check insertion level index in range Clear upper levels for ease of debugging Add random insertion and deletion cycle Crank up reps and dump old hashtable smoketest Enable argument parsing Add a stress test Snapshot the toplevel for later unlock Snapshot next node Unlock all locks even if there was confused updates Add more insert-lock-time consistency checks Add needed RCU read-side critical sections Add an sl_head to link back to header Add skiplist_fsck check for sl_head Randomize keys and allow for simpler skiplist implementations Fix various error checks First cut of globally locked skiplist Upgrade per-node-lock skiplist consistency checks Remove hold-down for checks in stresstest_lookup() Don't fsck the skiplist after all storage is freed!!! Need to initialize ->sl_head Fix deletion-time update-array check to include NULL Fully initialize before inserting into array Add duration argument Fix obsolete check Add debug flag controlling fsck tests under global locking Make test duration take premature wakeup into account Check for deletion failures Increase insertion probability to keep up with deletions Ditch performance and zoo code Track insertion failures Update valsperupdater default to avoid so much emptiness Add more arguments to control more parameters Re-initialize values upon deletion retry Make sure deletion flag is ordered after removal Extract common code Add comments, make skiplist_lookup_lock_prev() capture result Make skiplist_lookup_lock_prev() unconditionally give result Don't unlock NULL pointer Lock acquisition and release must be specialized More comments, add skiplist_delete() assertions Add more comments Fully initialize pointers before final insertion More comments. Add comments Call out skiplist.h dependencies Disable building parallel skiplist: start with locked iterators Add iterators for globally locked updates Add smoketests for iterators Weakly ordered iterators are common code Re-enable parallel-update skiplist. Unlock parallel skiplist_lookup_lock_prev() on lookup failure Don't do locked updates on deleted elements Add scans to stresstest Add pointer-hint-based iterators Move iterator smoketests to follow insert-delete smoketests Make insertion and deletion invalidate hinted iterators Test invalidation of hinted iterators in testing Use scalable random() with per-thread state Supply comparison function at initialization Turn on optimization, fix compiler warnings Clean up Makefile Not necessary for insertion to invalidate iterators Add TEST_SKIPLIST protection for torture testing Add required ACCESS_ONCE() calls to reader start/retry Fix concurrency issues Pull in skiplist work Get rid of an obsolete .gitignore file Get .gitignore in right place for hash-table code Remove generated files contrib.tex and origpub.tex from archive Add a few more non-breaking spaces in line numbers Fix skiplist test bug and add diagnostic option Remove unneeded skiplist locking from parent's final fsck Add skiplisttorture argument to disable full-skiplist scan Add pointer-hint iterator API to skiplist.h Don't stay in RCU read-side critical section across iterators Add pointer-based iterator tests to stresstest Add rebalancing function and smoketest for it Add rebalancing to stress test Add rebalances to the skiplist stresstest statistics skiplist: Another paper for the URLs file skiplist: All omission of skiplist-balancing tests from stresstest Add READ_ONCE() and WRITE_ONCE() Initial commit for concurrent logging log: Add a stress test log: Fixes to allow logtorture readers api: Switch x86 atomics to gcc C11-like atomics api: Switch to gcc C11-like atomics for PPC64 api: Switch to gcc C11-like atomics for ARM skiplist: Mark "debug" variable as unused datastruct: Hide definitions relavent only to torture testing log: Update .gitignore Update bibliography Merge commit '44e38b5538692a33825c801d579bb33fc2845ceb' Update bibliography Add Joe Duffy citations to STM discussion Add section on C11 atomics Bibliography update Update control-dependencies section Fix broken control-dependency example Only CPU can reorder optimized control-dependency example Add transition paragraph to beginning of RCU section Merge "Primitives" appendix into "Tools of the Trade" chapter A few tweaks to the debugging chapter toolsoftrade: Switch from ACCESS_ONCE() to READ_ONCE() Further editing to Tools of Trade Fix RMW use of READ_ONCE() Adjust "Notification Insufficient" cartoon for single-column Fix counter-performance table riser line Praveen Kumar (4): Fix URL for MathieuDesnoyers2009LFCollabSummit Resource is available at new address Url changed, perhaps, reflected department name change. Add URLs for a couple of bibliography entries SeongJae Park (39): datastruct: Fix code citation typos rcutorture: Update usage rcutorture: Remove redundant n_read_pt initialization rcutorture: Protect fake workload from compiler optimization Makefile: Check availability of `a2ping` and `inkscape` FAQ-BUILD: Add package requirements for Fedora 24 debugging: Add missing tilde debugging: Fix contextual typos formal: Rearrange promela sample code location formal/spinhint: Add missing NBSPs formal/spinhint: Fix typos formal/spinhint: Use \path{} for file name quotation formal/spinhint: Use \co{} for variable quotation consistently formal/spinhint: Reference figure formal/dyntickrcu: Add missing NBSPs formal/dyntickrcu: Append `()` to function name quotations formal/dyntickrcu: Fix typos formal/dyntickrcu: Fix wrong line number quotation formal/dyntickrcu: Fix wrong function name quotation formal/ppcmem: Fix typo for \co{} formal/ppcmem: Use \co{} for instruction quotation formal/ppcmem: Use P0 instead of thread 1 formal/ppcmem: Substitute `paper` with `chapter` formal/ppcmem: Polish a sentence by removing unnecessary conjunction formal/dyntickrcu: Adjust font size of sample code together: Add missing NBSPs for line numbers together: Fix a wrong code line quotation together: Fix wrong function name quotations together: Add a missing comma together: Append `()` suffix to function name quotation together: Fix a wrong field citation together: Fix a contextual typo together: Improve struct field quotation readability rt: Insert missing NBSPs rt: Fix a typo: soo -> so future/tm: Add missing period future/htm: Add a missing nbsp future: Fix a typo: `item` -> `\item` defer/rcu: Fix a section reference typo Tobias Klauser (4): Fix duplicate "and" in bibliography Fix several typos bib: Fix several typos CodeSamples: Fix typo of "acquire" .gitignore | 9 +- CodeSamples/Makefile | 2 + CodeSamples/SMPdesign/lockrwdeq.c | 2 +- .../promela/dyntick/dyntickRCU-base-s.spin | 196 - .../promela/dyntick/dyntickRCU-base-sl-busted.spin | 224 -- .../promela/dyntick/dyntickRCU-base-sl.spin | 220 -- .../analysis/promela/dyntick/dyntickRCU-base.spin | 164 - .../promela/dyntick/dyntickRCU-irq-nmi-ssl.spin | 506 --- .../promela/dyntick/dyntickRCU-irq-ssl.spin | 356 -- .../promela/dyntick/dyntickRCU-irqnn-ssl.spin | 330 -- .../analysis/promela/dyntick/dyntickRCUtarball.sh | 18 - CodeSamples/api-pthreads/api-gcc.h | 211 + CodeSamples/api-pthreads/api-pthreads.h | 2 + CodeSamples/api.h | 495 +-- CodeSamples/arch-arm/arch-arm.h | 167 - CodeSamples/arch-ppc64/arch-ppc64.h | 547 --- CodeSamples/arch-x86/arch-x86.h | 281 -- CodeSamples/datastruct/{ => hash}/.gitignore | 0 CodeSamples/datastruct/hash/hash_resize.c | 2 +- CodeSamples/datastruct/log/.gitignore | 3 + CodeSamples/datastruct/log/Makefile | 28 + CodeSamples/datastruct/log/log.h | 49 + CodeSamples/datastruct/log/log_glock.c | 95 + CodeSamples/datastruct/log/logtorture.h | 425 ++ CodeSamples/datastruct/skiplist/.gitignore | 3 + CodeSamples/datastruct/skiplist/Makefile | 31 + CodeSamples/datastruct/skiplist/URLs.txt | 45 + CodeSamples/datastruct/skiplist/skiplist.c | 384 ++ CodeSamples/datastruct/skiplist/skiplist.h | 285 ++ CodeSamples/datastruct/skiplist/skiplist_glock.c | 448 +++ CodeSamples/datastruct/skiplist/skiplisttorture.h | 973 +++++ CodeSamples/datastruct/skiplist/todo.txt | 9 + CodeSamples/defer/rcutorture.h | 7 +- .../{analysis => formal}/promela/.gitignore | 0 .../promela/atomicincrement.spin | 0 .../formal => formal/promela/dyntick}/.gitignore | 0 .../promela/dyntick}/dyntickRCU-base-s.spin | 0 .../dyntick}/dyntickRCU-base-sl-busted.spin | 0 .../dyntickRCU-base-sl-busted.spin.trail.txt | 0 .../promela/dyntick}/dyntickRCU-base-sl.spin | 0 .../promela/dyntick}/dyntickRCU-base.spin | 0 .../promela/dyntick}/dyntickRCU-irq-nmi-ssl.spin | 0 .../promela/dyntick}/dyntickRCU-irq-ssl.spin | 0 .../promela/dyntick}/dyntickRCU-irqnn-ssl.spin | 0 .../promela/dyntick}/dyntickRCUtarball.sh | 0 .../formal => formal/promela/dyntick}/runspin.sh | 0 .../{analysis => formal}/promela/increment.spin | 0 CodeSamples/{analysis => formal}/promela/lock.h | 0 CodeSamples/{analysis => formal}/promela/lock.spin | 0 CodeSamples/{analysis => formal}/promela/qrcu.spin | 0 CodeSamples/toolsoftrade/lock.c | 4 +- CodeSamples/toolsoftrade/rwlockscale.c | 6 +- FAQ-BUILD.txt | 7 +- Makefile | 146 +- SMPdesign/.gitignore | 10 + SMPdesign/AllocatorPool.eps | 287 -- SMPdesign/LockGranularity.eps | 243 -- SMPdesign/MazeNumberPath.eps | 157 - SMPdesign/MemoryBarrierPairing.eps | 218 -- SMPdesign/ParallelFastpath.eps | 213 - SMPdesign/SMPdesign.tex | 24 +- SMPdesign/allocatorcache.eps | 225 -- SMPdesign/beyond.tex | 12 +- SMPdesign/criteria.tex | 2 +- SMPdesign/lockdeqhash.eps | 218 -- SMPdesign/lockdeqhash1R.eps | 558 --- SMPdesign/lockdeqhash1R.fig | 39 +- SMPdesign/lockdeqhashlots.eps | 244 -- SMPdesign/lockdeqhashlots.fig | 48 +- SMPdesign/lockdeqpair.eps | 177 - SMPdesign/partexercises.tex | 24 +- advsync/.gitignore | 22 + advsync/.unused/MoreThanOneValue-15CPU-noresp.eps | 1306 ------- advsync/AbstractMemoryAccessModel.eps | 191 - advsync/DataDependencyNeeded.eps | 775 ---- advsync/DataDependencySupplied.eps | 738 ---- advsync/MemoryArchitecture.eps | 327 -- advsync/MemoryBarrierPairing.eps | 221 -- advsync/MoreThanOneValue-15CPU.eps | 1306 ------- advsync/MoreThanOneValue.eps | 200 - advsync/RCU-API.eps | 200 - advsync/RCUDeletion.eps | 253 -- advsync/RCUInsertion.eps | 210 - advsync/RCUReaderGP.eps | 181 - advsync/RCUReaderGPExtends.eps | 199 - advsync/RCUReplacement.eps | 414 -- advsync/ReadBarrierNeeded.eps | 673 ---- advsync/ReadBarrierSupplied.eps | 693 ---- advsync/ReadBarrierSupplied1.eps | 722 ---- advsync/ReadBarrierSupplied2.eps | 699 ---- advsync/SpeculativeLoad.eps | 603 --- advsync/SpeculativeLoadBarrier.eps | 595 --- advsync/SpeculativeLoadBarrierCancel.eps | 633 --- advsync/SplitCache.eps | 250 -- advsync/WriteBarrierOrdering.eps | 613 --- advsync/advsync.tex | 6 +- advsync/memorybarriers.tex | 403 +- alphapf.bst | 1613 ++++++++ appendix/ack/ack.tex | 12 +- appendix/appendix.tex | 7 +- appendix/primitives/primitives.tex | 502 --- appendix/questions/.gitignore | 1 + appendix/questions/after.eps | 170 - appendix/questions/after.tex | 32 +- appendix/questions/questions.tex | 4 +- appendix/rcuhist/{ => .unused}/linux-RCU.eps | 0 appendix/rcuhist/{ => .unused}/linux-RCUlock.eps | 0 appendix/rcuhist/{ => .unused}/rcuAPI.eps | 0 appendix/rcuhist/RCUinLinux.tex | 2 +- .../rcuimpl/{ => .unused}/AdvanceRCUCallbacks.fig | 0 .../rcuimpl/{ => .unused}/BigTreeClassicRCU.fig | 0 .../rcuimpl/{ => .unused}/BigTreeClassicRCUBH.fig | 0 .../{ => .unused}/BigTreeClassicRCUBHdyntick.fig | 0 appendix/rcuimpl/{ => .unused}/FlatClassicRCU.fig | 0 .../{ => .unused}/GenericRCUStateMachine.fig | 0 appendix/rcuimpl/{ => .unused}/GracePeriodBad.fig | 0 appendix/rcuimpl/{ => .unused}/RCUTreeInit.fig | 0 appendix/rcuimpl/{ => .unused}/RCUTreeLeafScan.fig | 0 appendix/rcuimpl/{ => .unused}/RCUTreeQSScan.fig | 0 appendix/rcuimpl/{ => .unused}/RCUbweBlock.fig | 0 .../{ => .unused}/RCUpreemptCounterFlip.fig | 0 appendix/rcuimpl/{ => .unused}/RCUpreemptLists.fig | 0 .../{ => .unused}/RCUpreemptListsCompare.fig | 0 .../rcuimpl/{ => .unused}/RCUpreemptStates.fig | 0 .../rcuimpl/{ => .unused}/RCUpreemptTimeline.fig | 0 .../rcuimpl/{ => .unused}/RCUpreemptValidation.fig | 0 appendix/rcuimpl/{ => .unused}/RCUrt-MBnowaste.fig | 0 appendix/rcuimpl/{ => .unused}/RCUrt-MBwaste.fig | 0 .../rcuimpl/{ => .unused}/TinyRCUCallbacks.fig | 0 appendix/rcuimpl/{ => .unused}/TreeClassicRCU.fig | 0 .../rcuimpl/{ => .unused}/TreeClassicRCUGP.fig | 0 appendix/rcuimpl/{ => .unused}/TreeMapping.fig | 0 .../rcuimpl/{ => .unused}/TreeRCUStateMachine.fig | 0 appendix/rcuimpl/{ => .unused}/srcuds.fig | 0 appendix/rcuimpl/AdvanceRCUCallbacks.eps | 316 -- appendix/rcuimpl/BigTreeClassicRCU.eps | 286 -- appendix/rcuimpl/BigTreeClassicRCUBH.eps | 305 -- appendix/rcuimpl/BigTreeClassicRCUBHdyntick.eps | 462 --- appendix/rcuimpl/FlatClassicRCU.eps | 254 -- appendix/rcuimpl/GenericRCUStateMachine.eps | 514 --- appendix/rcuimpl/GracePeriodBad.eps | 194 - appendix/rcuimpl/RCUTreeInit.eps | 490 --- appendix/rcuimpl/RCUTreeLeafScan.eps | 504 --- appendix/rcuimpl/RCUTreeQSScan.eps | 504 --- appendix/rcuimpl/RCUbweBlock.eps | 575 --- appendix/rcuimpl/RCUpreemptCounterFlip.eps | 291 -- appendix/rcuimpl/RCUpreemptLists.eps | 220 -- appendix/rcuimpl/RCUpreemptListsCompare.eps | 311 -- appendix/rcuimpl/RCUpreemptStates.eps | 4120 -------------------- appendix/rcuimpl/RCUpreemptTimeline.eps | 351 -- appendix/rcuimpl/RCUpreemptValidation.eps | 696 ---- appendix/rcuimpl/RCUrt-MBnowaste.eps | 273 -- appendix/rcuimpl/RCUrt-MBwaste.eps | 345 -- appendix/rcuimpl/TinyRCUCallbacks.eps | 233 -- appendix/rcuimpl/TreeClassicRCU.eps | 288 -- appendix/rcuimpl/TreeClassicRCUGP.eps | 730 ---- appendix/rcuimpl/TreeMapping.eps | 219 -- appendix/rcuimpl/TreeRCUStateMachine.eps | 358 -- appendix/rcuimpl/rcupreempt.tex | 2 +- appendix/rcuimpl/rcutreewt.tex | 18 +- appendix/rcuimpl/srcu.tex | 2 +- appendix/rcuimpl/srcuds.eps | 268 -- appendix/whymb/.gitignore | 7 + appendix/whymb/MESI.eps | 293 -- appendix/whymb/cacheSB.eps | 216 - appendix/whymb/cacheSBf.eps | 247 -- appendix/whymb/cacheSBfIQ.eps | 271 -- appendix/whymb/cacheSC.eps | 150 - appendix/whymb/cacheSCwrite.eps | 170 - appendix/whymb/hostileordering.eps | 243 -- appendix/whymb/whymemorybarriers.tex | 12 +- bib/RCU.bib | 80 +- bib/RCUuses.bib | 2 +- bib/TM.bib | 73 +- bib/WFS.bib | 31 +- bib/energy.bib | 4 +- bib/hw.bib | 23 +- bib/os.bib | 6 +- bib/parallelsys.bib | 8 +- bib/realtime.bib | 244 +- bib/refs.bib | 4 +- bib/swtools.bib | 65 +- bib/syncrefs.bib | 60 +- book.cls | 21 +- contrib.tex | 60 - count/.gitignore | 5 + count/GlobalInc.eps | 429 -- count/GlobalTreeInc.eps | 501 --- count/PerThreadInc.eps | 421 -- count/count.tex | 79 +- count/count_lim.eps | 177 - count/globbal.eps | 331 -- cpu/.gitignore | 2 + cpu/3DI.eps | 193 - cpu/SystemArch.eps | 395 -- cpu/cpu.tex | 4 +- datastruct/.gitignore | 1 + datastruct/datastruct.tex | 40 +- datastruct/hashdiagram.eps | 301 -- debugging/debugging.tex | 43 +- defer/.gitignore | 10 + defer/GracePeriodGood.eps | 210 - defer/Linux_hlist.eps | 208 - defer/Linux_list.eps | 241 -- defer/Linux_list_abbr.eps | 139 - defer/QSBRGracePeriod.eps | 255 -- defer/RCUDeletion.eps | 253 -- defer/RCUListDeleteClassic.eps | 328 -- defer/RCUReplacement.eps | 470 --- defer/RCUenvAPI.eps | 214 - defer/defer.tex | 6 +- defer/hazptr.tex | 6 +- defer/rcu.tex | 26 +- defer/rcuapi.tex | 6 +- defer/rcufundamental.tex | 10 +- defer/rcuusage.tex | 16 +- defer/refcnt.tex | 4 +- defer/rwlockRCUupdate.eps | 264 -- defer/seqlock.tex | 10 +- defer/toyrcu.tex | 42 +- easy/easy.tex | 4 +- formal/.gitignore | 1 + formal/RCUpreemptStates.eps | 4120 -------------------- formal/axiomatic.tex | 4 +- formal/dyntickrcu.tex | 120 +- formal/formal.tex | 6 +- formal/ppcmem.tex | 27 +- formal/spinhint.tex | 158 +- future/future.tex | 4 +- future/htm.tex | 8 +- future/tm.tex | 4 +- glossary.tex | 4 +- howto/howto.tex | 9 +- intro/.gitignore | 4 + intro/FourTaskCategories.eps | 261 -- intro/FourTaskOrder.eps | 321 -- intro/Generality.eps | 386 -- intro/PPGrelation.eps | 165 - intro/intro.tex | 22 +- locking/.gitignore | 5 + locking/DeadlockCycle.eps | 227 -- locking/LayeredLockHierarchy.eps | 222 -- locking/LocalLockHierarchy.eps | 221 -- locking/NonLocalLockHierarchy.eps | 221 -- locking/locking-existence.tex | 4 +- locking/locking.tex | 36 +- locking/rnplock.eps | 305 -- origpub.tex | 9 - owned/owned.tex | 6 +- perfbook.tex | 60 +- qqz.sty | 2 +- rt/rt.tex | 28 +- together/applyrcu.tex | 26 +- together/refcnt.tex | 18 +- together/together.tex | 4 +- toolsoftrade/.gitignore | 1 + toolsoftrade/shellparallel.eps | 210 - toolsoftrade/toolsoftrade.tex | 787 +++- utilities/dohyphen2endash.sh | 74 + utilities/doverbboxcheck.sh | 35 + .../runspin.sh => utilities/findminusnum.sh | 21 +- utilities/hyphen2endash.sh | 49 + utilities/mpostcheck.sh | 149 + utilities/runfirstlatex.sh | 5 + utilities/runlatex.sh | 15 +- utilities/verbboxcheck.pl | 52 + 266 files changed, 7402 insertions(+), 46232 deletions(-) delete mode 100644 CodeSamples/analysis/promela/dyntick/dyntickRCU-base-s.spin delete mode 100644 CodeSamples/analysis/promela/dyntick/dyntickRCU-base-sl-busted.spin delete mode 100644 CodeSamples/analysis/promela/dyntick/dyntickRCU-base-sl.spin delete mode 100644 CodeSamples/analysis/promela/dyntick/dyntickRCU-base.spin delete mode 100644 CodeSamples/analysis/promela/dyntick/dyntickRCU-irq-nmi-ssl.spin delete mode 100644 CodeSamples/analysis/promela/dyntick/dyntickRCU-irq-ssl.spin delete mode 100644 CodeSamples/analysis/promela/dyntick/dyntickRCU-irqnn-ssl.spin delete mode 100644 CodeSamples/analysis/promela/dyntick/dyntickRCUtarball.sh create mode 100644 CodeSamples/api-pthreads/api-gcc.h rename CodeSamples/datastruct/{ => hash}/.gitignore (100%) create mode 100644 CodeSamples/datastruct/log/.gitignore create mode 100644 CodeSamples/datastruct/log/Makefile create mode 100644 CodeSamples/datastruct/log/log.h create mode 100644 CodeSamples/datastruct/log/log_glock.c create mode 100644 CodeSamples/datastruct/log/logtorture.h create mode 100644 CodeSamples/datastruct/skiplist/.gitignore create mode 100644 CodeSamples/datastruct/skiplist/Makefile create mode 100644 CodeSamples/datastruct/skiplist/URLs.txt create mode 100644 CodeSamples/datastruct/skiplist/skiplist.c create mode 100644 CodeSamples/datastruct/skiplist/skiplist.h create mode 100644 CodeSamples/datastruct/skiplist/skiplist_glock.c create mode 100644 CodeSamples/datastruct/skiplist/skiplisttorture.h create mode 100644 CodeSamples/datastruct/skiplist/todo.txt rename CodeSamples/{analysis => formal}/promela/.gitignore (100%) rename CodeSamples/{analysis => formal}/promela/atomicincrement.spin (100%) rename CodeSamples/{appendix/formal => formal/promela/dyntick}/.gitignore (100%) rename CodeSamples/{appendix/formal => formal/promela/dyntick}/dyntickRCU-base-s.spin (100%) rename CodeSamples/{appendix/formal => formal/promela/dyntick}/dyntickRCU-base-sl-busted.spin (100%) rename CodeSamples/{appendix/formal => formal/promela/dyntick}/dyntickRCU-base-sl-busted.spin.trail.txt (100%) rename CodeSamples/{appendix/formal => formal/promela/dyntick}/dyntickRCU-base-sl.spin (100%) rename CodeSamples/{appendix/formal => formal/promela/dyntick}/dyntickRCU-base.spin (100%) rename CodeSamples/{appendix/formal => formal/promela/dyntick}/dyntickRCU-irq-nmi-ssl.spin (100%) rename CodeSamples/{appendix/formal => formal/promela/dyntick}/dyntickRCU-irq-ssl.spin (100%) rename CodeSamples/{appendix/formal => formal/promela/dyntick}/dyntickRCU-irqnn-ssl.spin (100%) rename CodeSamples/{appendix/formal => formal/promela/dyntick}/dyntickRCUtarball.sh (100%) rename CodeSamples/{appendix/formal => formal/promela/dyntick}/runspin.sh (100%) rename CodeSamples/{analysis => formal}/promela/increment.spin (100%) rename CodeSamples/{analysis => formal}/promela/lock.h (100%) rename CodeSamples/{analysis => formal}/promela/lock.spin (100%) rename CodeSamples/{analysis => formal}/promela/qrcu.spin (100%) delete mode 100644 SMPdesign/AllocatorPool.eps delete mode 100644 SMPdesign/LockGranularity.eps delete mode 100644 SMPdesign/MazeNumberPath.eps delete mode 100644 SMPdesign/MemoryBarrierPairing.eps delete mode 100644 SMPdesign/ParallelFastpath.eps delete mode 100644 SMPdesign/allocatorcache.eps delete mode 100644 SMPdesign/lockdeqhash.eps delete mode 100644 SMPdesign/lockdeqhash1R.eps delete mode 100644 SMPdesign/lockdeqhashlots.eps delete mode 100644 SMPdesign/lockdeqpair.eps delete mode 100644 advsync/.unused/MoreThanOneValue-15CPU-noresp.eps delete mode 100644 advsync/AbstractMemoryAccessModel.eps delete mode 100644 advsync/DataDependencyNeeded.eps delete mode 100644 advsync/DataDependencySupplied.eps delete mode 100644 advsync/MemoryArchitecture.eps delete mode 100644 advsync/MemoryBarrierPairing.eps delete mode 100644 advsync/MoreThanOneValue-15CPU.eps delete mode 100644 advsync/MoreThanOneValue.eps delete mode 100644 advsync/RCU-API.eps delete mode 100644 advsync/RCUDeletion.eps delete mode 100644 advsync/RCUInsertion.eps delete mode 100644 advsync/RCUReaderGP.eps delete mode 100644 advsync/RCUReaderGPExtends.eps delete mode 100644 advsync/RCUReplacement.eps delete mode 100644 advsync/ReadBarrierNeeded.eps delete mode 100644 advsync/ReadBarrierSupplied.eps delete mode 100644 advsync/ReadBarrierSupplied1.eps delete mode 100644 advsync/ReadBarrierSupplied2.eps delete mode 100644 advsync/SpeculativeLoad.eps delete mode 100644 advsync/SpeculativeLoadBarrier.eps delete mode 100644 advsync/SpeculativeLoadBarrierCancel.eps delete mode 100644 advsync/SplitCache.eps delete mode 100644 advsync/WriteBarrierOrdering.eps create mode 100644 alphapf.bst delete mode 100644 appendix/primitives/primitives.tex create mode 100644 appendix/questions/.gitignore delete mode 100644 appendix/questions/after.eps rename appendix/rcuhist/{ => .unused}/linux-RCU.eps (100%) rename appendix/rcuhist/{ => .unused}/linux-RCUlock.eps (100%) rename appendix/rcuhist/{ => .unused}/rcuAPI.eps (100%) rename appendix/rcuimpl/{ => .unused}/AdvanceRCUCallbacks.fig (100%) rename appendix/rcuimpl/{ => .unused}/BigTreeClassicRCU.fig (100%) rename appendix/rcuimpl/{ => .unused}/BigTreeClassicRCUBH.fig (100%) rename appendix/rcuimpl/{ => .unused}/BigTreeClassicRCUBHdyntick.fig (100%) rename appendix/rcuimpl/{ => .unused}/FlatClassicRCU.fig (100%) rename appendix/rcuimpl/{ => .unused}/GenericRCUStateMachine.fig (100%) rename appendix/rcuimpl/{ => .unused}/GracePeriodBad.fig (100%) rename appendix/rcuimpl/{ => .unused}/RCUTreeInit.fig (100%) rename appendix/rcuimpl/{ => .unused}/RCUTreeLeafScan.fig (100%) rename appendix/rcuimpl/{ => .unused}/RCUTreeQSScan.fig (100%) rename appendix/rcuimpl/{ => .unused}/RCUbweBlock.fig (100%) rename appendix/rcuimpl/{ => .unused}/RCUpreemptCounterFlip.fig (100%) rename appendix/rcuimpl/{ => .unused}/RCUpreemptLists.fig (100%) rename appendix/rcuimpl/{ => .unused}/RCUpreemptListsCompare.fig (100%) rename appendix/rcuimpl/{ => .unused}/RCUpreemptStates.fig (100%) rename appendix/rcuimpl/{ => .unused}/RCUpreemptTimeline.fig (100%) rename appendix/rcuimpl/{ => .unused}/RCUpreemptValidation.fig (100%) rename appendix/rcuimpl/{ => .unused}/RCUrt-MBnowaste.fig (100%) rename appendix/rcuimpl/{ => .unused}/RCUrt-MBwaste.fig (100%) rename appendix/rcuimpl/{ => .unused}/TinyRCUCallbacks.fig (100%) rename appendix/rcuimpl/{ => .unused}/TreeClassicRCU.fig (100%) rename appendix/rcuimpl/{ => .unused}/TreeClassicRCUGP.fig (100%) rename appendix/rcuimpl/{ => .unused}/TreeMapping.fig (100%) rename appendix/rcuimpl/{ => .unused}/TreeRCUStateMachine.fig (100%) rename appendix/rcuimpl/{ => .unused}/srcuds.fig (100%) delete mode 100644 appendix/rcuimpl/AdvanceRCUCallbacks.eps delete mode 100644 appendix/rcuimpl/BigTreeClassicRCU.eps delete mode 100644 appendix/rcuimpl/BigTreeClassicRCUBH.eps delete mode 100644 appendix/rcuimpl/BigTreeClassicRCUBHdyntick.eps delete mode 100644 appendix/rcuimpl/FlatClassicRCU.eps delete mode 100644 appendix/rcuimpl/GenericRCUStateMachine.eps delete mode 100644 appendix/rcuimpl/GracePeriodBad.eps delete mode 100644 appendix/rcuimpl/RCUTreeInit.eps delete mode 100644 appendix/rcuimpl/RCUTreeLeafScan.eps delete mode 100644 appendix/rcuimpl/RCUTreeQSScan.eps delete mode 100644 appendix/rcuimpl/RCUbweBlock.eps delete mode 100644 appendix/rcuimpl/RCUpreemptCounterFlip.eps delete mode 100644 appendix/rcuimpl/RCUpreemptLists.eps delete mode 100644 appendix/rcuimpl/RCUpreemptListsCompare.eps delete mode 100644 appendix/rcuimpl/RCUpreemptStates.eps delete mode 100644 appendix/rcuimpl/RCUpreemptTimeline.eps delete mode 100644 appendix/rcuimpl/RCUpreemptValidation.eps delete mode 100644 appendix/rcuimpl/RCUrt-MBnowaste.eps delete mode 100644 appendix/rcuimpl/RCUrt-MBwaste.eps delete mode 100644 appendix/rcuimpl/TinyRCUCallbacks.eps delete mode 100644 appendix/rcuimpl/TreeClassicRCU.eps delete mode 100644 appendix/rcuimpl/TreeClassicRCUGP.eps delete mode 100644 appendix/rcuimpl/TreeMapping.eps delete mode 100644 appendix/rcuimpl/TreeRCUStateMachine.eps delete mode 100644 appendix/rcuimpl/srcuds.eps create mode 100644 appendix/whymb/.gitignore delete mode 100644 appendix/whymb/MESI.eps delete mode 100644 appendix/whymb/cacheSB.eps delete mode 100644 appendix/whymb/cacheSBf.eps delete mode 100644 appendix/whymb/cacheSBfIQ.eps delete mode 100644 appendix/whymb/cacheSC.eps delete mode 100644 appendix/whymb/cacheSCwrite.eps delete mode 100644 appendix/whymb/hostileordering.eps delete mode 100644 contrib.tex delete mode 100644 count/GlobalInc.eps delete mode 100644 count/GlobalTreeInc.eps delete mode 100644 count/PerThreadInc.eps delete mode 100644 count/count_lim.eps delete mode 100644 count/globbal.eps create mode 100644 cpu/.gitignore delete mode 100644 cpu/3DI.eps delete mode 100644 cpu/SystemArch.eps create mode 100644 datastruct/.gitignore delete mode 100644 datastruct/hashdiagram.eps create mode 100644 defer/.gitignore delete mode 100644 defer/GracePeriodGood.eps delete mode 100644 defer/Linux_hlist.eps delete mode 100644 defer/Linux_list.eps delete mode 100644 defer/Linux_list_abbr.eps delete mode 100644 defer/QSBRGracePeriod.eps delete mode 100644 defer/RCUDeletion.eps delete mode 100644 defer/RCUListDeleteClassic.eps delete mode 100644 defer/RCUReplacement.eps delete mode 100644 defer/RCUenvAPI.eps delete mode 100644 defer/rwlockRCUupdate.eps create mode 100644 formal/.gitignore delete mode 100644 formal/RCUpreemptStates.eps create mode 100644 intro/.gitignore delete mode 100644 intro/FourTaskCategories.eps delete mode 100644 intro/FourTaskOrder.eps delete mode 100644 intro/Generality.eps delete mode 100644 intro/PPGrelation.eps create mode 100644 locking/.gitignore delete mode 100644 locking/DeadlockCycle.eps delete mode 100644 locking/LayeredLockHierarchy.eps delete mode 100644 locking/LocalLockHierarchy.eps delete mode 100644 locking/NonLocalLockHierarchy.eps delete mode 100644 locking/rnplock.eps delete mode 100644 origpub.tex create mode 100644 toolsoftrade/.gitignore delete mode 100644 toolsoftrade/shellparallel.eps create mode 100644 utilities/dohyphen2endash.sh create mode 100644 utilities/doverbboxcheck.sh rename CodeSamples/analysis/promela/dyntick/runspin.sh => utilities/findminusnum.sh (62%) create mode 100644 utilities/hyphen2endash.sh create mode 100644 utilities/mpostcheck.sh create mode 100644 utilities/verbboxcheck.pl