Anatol Pomozov (3): Use srcu version of function Properly escape percent symbol Remove repetitive phrase Borislav Petkov (3): Deferred Processing: Fix a typo Deferred Processing intro fixes Fixes to defer chapter Paul E. McKenney (126): Add bibliography database Bibliography updates Note that inevitable transactions prohibit non-blocking transactions. Inevitable transactions are now called irrevocable transactions Add data files Add hash_resize initial shot. Describe system used to generate rwlock/refcnt vs. RCU More indirection. More update of todo list Adjust testing of resizable hash table. Add cartoon to sequence locking Fix s/X/Y/ typo Fix broken figure reference. Update one-column bibliography based on .bib file changes. Add rcu_assign_pointer(). Add Latex comment showing reader exercise guidance Fix off-by-one count bug in script. Update count data-reduction script to actually produce .dat files. Convert Tom Hart's hazard-pointer implementation to perfbook Add hazptr_clean_pointer() for non-blocking hazard-pointer updates Add a HAZPTR_POISON for list-pointer poisoning. Fix hazard-pointer parameter comment. Make api.h self-excluding, add "static inline" Add hazard-pointer-protected hash table. Enable perfbook code to be built on x86_64 Fix hashtorture's defaults and argument parsing. Silence a 64-bit warning Remove hazard-pointer training wheels Make RCU hash tables use call_rcu() Enable easy switch to QSBR for hash_bkt_rcu Set the --updatewait default to 1 millisecond Make hashtorture.h use a function pointer to support multiple test types. Function pointer for defer_del_done for more hashtorture tests Add Schroedingers-zoo test for hashing Schroedinger default number of cats to zero Propagate change to quick-quizzes chapter. Make the Schroedinger hash tests actually create the cat. Add test, data-reduction, and plotting scripts for hash tables. Update reducing and plotting to cover additional hash cases. Increase hash test samples. Update bibligraphy files. Fix .bib blow. Additional fixes to hash-table data-reduction script Add statistical cautions in validation-chapter summary Fixes from Alexey Roytman review Further repair to halting-problem citations Credit Alexey Roytman for eliminating NULL tests Yet more bib repair, propagate Alexey credit to qqz Fix original-publication tags for the appendices Pull in material from 2012 HOTPAR paper Add definitions for embarrassing and humiliating parallelism. Remove self-referential citation. Add higher dimensionality to maze future work. Make SMPdesign/lockdeq.pdf B&W friendly Adjust verbiage for B&W-friendly lockdeq diagram Update bibliography files Add citation to Sorin et al. Add Quick Quiz explaining why goflag read doesn't need mb Apply Alexey Roytman May 15th feedback. Alexey Roytman May 17 2013 feedback Add verbiage describing forward-progress guarantees for mainframe HTM Crowbar quick-quiz cross references Document how to reference a quick quiz. Add cppmem LWN article to formal verification appendix Add commentary on mainframe HTM forward-progress guarantees Add section on use of satisfiability solvers for formal verification Upgrade bibliography files Add assertion that programs should neither maintain state nor do I/O Add pointer to count_register_thread() to allow on-stack storage Add count_stack to check performance of stack-allocated counters Allow counttorture.h to emit per-thread distribution of counts Allow CFLAGS to carry definitions through Update bibliography Add citation to Michael Scott's new textbook Modern systems support many memory-barrier combinations Apply Frederic feedback in the form of a quick quiz Update todo.txt Update bibliography Update todo list. Update for RCU changes in recent kernels Update bibliography database. Promote formal-methods appendix to a chapter. Don't blow away inkscape PDFs during "make clean". Smooth the transition from debugging to formal validation. Move data structures right after deferred processing Fix non-standard labels in formal chapter. Note to self on generating PDFs from inkscape .svg files Add inkscape to the list of packages required. Automatically generate .pdf from .svg using inkscape Update bibliography files Add "what about updates" section to defer chapter Add update plots and adjust CPUs for datastruct perf scripts Generalize "applying RCU" to "putting it all together" Move validation before putting it all together Add some hierarchy to transactional memory futures Note HTM debugging research proposal. Add performance data for hash-table data structure Discuss performance results for read-only Schroedinger hash table More performance-result discussion. Add discussion for RCU-protected hash tables. Add quick quiz about hash-table extrapolation Re-organize data-structures chapter Add relativistic hash table diagrams Get the table out of resize mode at the end of the resize operation Add verbiage on alternative resizable hash tables. Add section on other data structures Wordsmithing Fixes to resizable hash table Add deferred-free to resizable hash tables. Start description of resizable hash tables Add script to generate resizable-hash-table performance numbers Eliminate duplicate code Fix resizable hash table memory ordering Adhere to standard by returning NULL from pthread functions Resizable hash table verbiage More hash fixes. Fix sectioning blow in locking chapter. New bibliography entries. Finish data-structures chapter. Additional "together" sections. More additions to "together" chapter. Add hazard pointers to defer chapter. Touch up the benchmarking and profiling entries. Add QQ about HAZPTR_POISON. Fix chapter label for "together" Update advanced-synchronization chapter CodeSamples/Makefile | 22 +- CodeSamples/api-pthreads/api-pthreads.h | 32 +- CodeSamples/api.h | 57 +- CodeSamples/arch-arm/arch-arm.h | 2 +- CodeSamples/arch-ppc64/arch-ppc64.h | 2 +- CodeSamples/arch-x86/arch-x86.h | 22 +- CodeSamples/count/.gitignore | 1 + CodeSamples/count/Makefile | 30 +- CodeSamples/count/count_end.c | 2 +- CodeSamples/count/count_end_rcu.c | 2 +- CodeSamples/count/count_stack.c | 77 + CodeSamples/count/count_stat_eventual.c | 4 +- CodeSamples/count/count_tstat.c | 2 +- CodeSamples/count/counttorture.h | 12 +- CodeSamples/count/perf.sh | 4 +- CodeSamples/count/reduce.sh | 54 +- CodeSamples/datastruct/.gitignore | 2 + CodeSamples/datastruct/Makefile | 9 +- .../data/hash.2013.12.02a/perf.sh.2013.12.02a.out | 25187 +++++++++++ .../datastruct/data/hash.2013.12.02a/perftest.eps | 2252 + .../perftest.hash_bkt.2013.12.02a.dat | 13 + .../perftest.hash_bkt_hazptr.2013.12.02a.dat | 13 + .../perftest.hash_bkt_rcu.2013.12.02a.dat | 13 + .../perftest.hash_global.2013.12.02a.dat | 13 + .../data/hash.2013.12.02a/perftestlin.eps | 2102 + .../zoo.cat.hash_bkt.2013.12.02a.dat | 13 + .../zoo.cat.hash_bkt_hazptr.2013.12.02a.dat | 13 + .../zoo.cat.hash_bkt_rcu.2013.12.02a.dat | 13 + .../zoo.cat.hash_global.2013.12.02a.dat | 13 + .../zoo.catall.hash_bkt.2013.12.02a.dat | 13 + .../zoo.catall.hash_bkt_hazptr.2013.12.02a.dat | 13 + .../zoo.catall.hash_bkt_rcu.2013.12.02a.dat | 13 + .../zoo.catall.hash_global.2013.12.02a.dat | 13 + .../zoo.cpus.hash_bkt-16384.2013.12.02a.dat | 13 + .../zoo.cpus.hash_bkt-2048.2013.12.02a.dat | 13 + .../zoo.cpus.hash_bkt-4096.2013.12.02a.dat | 13 + .../zoo.cpus.hash_bkt-8192.2013.12.02a.dat | 13 + .../zoo.cpus.hash_bkt.2013.12.02a.dat | 13 + .../zoo.cpus.hash_bkt_hazptr-16384.2013.12.02a.dat | 13 + .../zoo.cpus.hash_bkt_hazptr-2048.2013.12.02a.dat | 13 + .../zoo.cpus.hash_bkt_hazptr-4096.2013.12.02a.dat | 13 + .../zoo.cpus.hash_bkt_hazptr-8192.2013.12.02a.dat | 13 + .../zoo.cpus.hash_bkt_hazptr.2013.12.02a.dat | 13 + .../zoo.cpus.hash_bkt_rcu-16384.2013.12.02a.dat | 13 + .../zoo.cpus.hash_bkt_rcu-2048.2013.12.02a.dat | 13 + .../zoo.cpus.hash_bkt_rcu-4096.2013.12.02a.dat | 13 + .../zoo.cpus.hash_bkt_rcu-8192.2013.12.02a.dat | 13 + .../zoo.cpus.hash_bkt_rcu.2013.12.02a.dat | 13 + .../zoo.cpus.hash_global-16384.2013.12.02a.dat | 13 + .../zoo.cpus.hash_global-2048.2013.12.02a.dat | 13 + .../zoo.cpus.hash_global-4096.2013.12.02a.dat | 13 + .../zoo.cpus.hash_global-8192.2013.12.02a.dat | 13 + .../zoo.cpus.hash_global.2013.12.02a.dat | 13 + .../zoo.mix.hash_bkt.2013.12.02a.out | 1 + .../zoo.mix.hash_bkt_hazptr.2013.12.02a.out | 1 + .../zoo.mix.hash_bkt_rcu.2013.12.02a.out | 1 + .../zoo.mix.hash_global.2013.12.02a.out | 1 + .../zoo.reads.hash_bkt.2013.12.02a.dat | 1 + .../zoo.reads.hash_bkt_hazptr.2013.12.02a.dat | 1 + .../zoo.reads.hash_bkt_rcu.2013.12.02a.dat | 1 + .../zoo.reads.hash_global.2013.12.02a.dat | 1 + .../zoo.upd.hash_bkt.2013.12.02a.dat | 14 + .../zoo.upd.hash_bkt_hazptr.2013.12.02a.dat | 14 + .../zoo.upd.hash_bkt_rcu.2013.12.02a.dat | 14 + .../zoo.upd.hash_global.2013.12.02a.dat | 14 + .../zoo.updates.hash_bkt.2013.12.02a.dat | 1 + .../zoo.updates.hash_bkt_hazptr.2013.12.02a.dat | 1 + .../zoo.updates.hash_bkt_rcu.2013.12.02a.dat | 1 + .../zoo.updates.hash_global.2013.12.02a.dat | 1 + .../zoo.updrd.hash_bkt.2013.12.02a.dat | 14 + .../zoo.updrd.hash_bkt_hazptr.2013.12.02a.dat | 14 + .../zoo.updrd.hash_bkt_rcu.2013.12.02a.dat | 14 + .../zoo.updrd.hash_global.2013.12.02a.dat | 14 + .../datastruct/data/hash.2013.12.02a/zoocatall.eps | 2210 + .../data/hash.2013.12.02a/zoocatalllin.eps | 2102 + .../data/hash.2013.12.02a/zoocatonly.eps | 2206 + .../data/hash.2013.12.02a/zoocatonlylin.eps | 2102 + .../datastruct/data/hash.2013.12.02a/zoocpu.eps | 2327 ++ .../data/hash.2013.12.02a/zoocpubktlin.eps | 2106 + .../data/hash.2013.12.02a/zoocpubktlin8.eps | 2196 + .../data/hash.2013.12.02a/zoocpubktsizelin.eps | 2153 + .../datastruct/data/hash.2013.12.02a/zoocpulin.eps | 2249 + .../datastruct/data/hash.2013.12.02a/zooupdate.eps | 2268 + .../data/hash.2013.12.02a/zooupdatelu.eps | 2210 + .../data/hash.2013.12.02a/zooupdatelulin.eps | 2174 + CodeSamples/datastruct/hash_bkt_hazptr.c | 222 + CodeSamples/datastruct/hash_bkt_rcu.c | 18 + CodeSamples/datastruct/hash_resize.c | 327 + CodeSamples/datastruct/hashtorture.h | 499 +- CodeSamples/datastruct/perf-resize.sh | 46 + CodeSamples/datastruct/perf.sh | 99 + CodeSamples/datastruct/plots.sh | 285 + CodeSamples/datastruct/reduce.sh | 126 + CodeSamples/defer/.gitignore | 1 + CodeSamples/defer/Makefile | 4 + CodeSamples/defer/data/3a20/2.6.3-nonPREEMPT.tar | Bin 0 -> 143360 bytes .../defer/data/3a20/2007.11.19a/RCUperf.dat | 16 + .../defer/data/3a20/2007.11.19a/RCUperfdbg.dat | 8 + .../data/3a20/2007.11.19a/RCUperfnonPREEMPTerr.dat | 16 + CodeSamples/defer/data/3a20/2007.11.19a/cpuinfo | 369 + CodeSamples/defer/data/3a20/2007.11.19a/plots.sh | 46 + .../defer/data/3a20/2007.11.19a/rwlockRCUperf.eps | 903 + .../defer/data/3a20/2007.11.19a/rwlockRCUperf.jpg | Bin 0 -> 46528 bytes .../defer/data/3a20/2007.11.19a/rwlockRCUperf.pbm | Bin 0 -> 38411 bytes .../data/3a20/2007.11.19a/rwlockRCUperfdbg.eps | 576 + .../data/3a20/2007.11.19a/rwlockRCUperfdbg.jpg | Bin 0 -> 32540 bytes .../data/3a20/2007.11.19a/rwlockRCUperfdbg.pbm | Bin 0 -> 38411 bytes .../defer/data/3a20/2007.11.19a/rwlockperf.dat | 16 + .../defer/data/3a20/2007.11.19a/rwlockperfdbg.dat | 8 + .../3a20/2007.11.19a/rwlockperfnonPREEMPTerr.dat | 16 + .../defer/data/3a20/2007.11.19a/todatall.sh | 4 + .../defer/data/3a20/2007.11.20a/2.6.23-PREEMPT.tar | Bin 0 -> 174080 bytes .../defer/data/3a20/2007.11.20a/RCUperfPREEMPT.dat | 16 + .../data/3a20/2007.11.20a/RCUperfPREEMPTerr.dat | 16 + CodeSamples/defer/data/3a20/2007.11.20a/plots.sh | 25 + .../data/3a20/2007.11.20a/rwlockRCUperfPREEMPT.eps | 644 + .../data/3a20/2007.11.20a/rwlockRCUperfPREEMPT.jpg | Bin 0 -> 36095 bytes .../data/3a20/2007.11.20a/rwlockRCUperfPREEMPT.pbm | Bin 0 -> 38411 bytes .../data/3a20/2007.11.20a/rwlockperfPREEMPT.dat | 16 + .../defer/data/3a20/2007.11.20a/todatall.sh | 3 + .../data/3a20/2007.11.22a/2.6.23-PREEMPT-ref.tar | Bin 0 -> 61440 bytes .../3a20/2007.11.22a/2.6.23-PREEMPT-rwlock.tar | Bin 0 -> 71680 bytes .../defer/data/3a20/2007.11.22a/2.6.23-PREEMPT.tar | Bin 0 -> 61440 bytes .../defer/data/3a20/2007.11.22a/RCUperfPREEMPT.dat | 16 + .../data/3a20/2007.11.22a/RCUperfPREEMPTerr.dat | 16 + .../data/3a20/2007.11.22a/atomicincperfPREEMPT.dat | 16 + .../3a20/2007.11.22a/atomicincperfPREEMPTerr.dat | 16 + .../data/3a20/2007.11.22a/atomicrefperfPREEMPT.dat | 16 + .../3a20/2007.11.22a/atomicrefperfPREEMPTerr.dat | 16 + CodeSamples/defer/data/3a20/2007.11.22a/plots.sh | 46 + .../data/3a20/2007.11.22a/refRCUperfPREEMPT.eps | 874 + .../data/3a20/2007.11.22a/refRCUperfPREEMPT.jpg | Bin 0 -> 42452 bytes .../data/3a20/2007.11.22a/refRCUperfPREEMPT.pbm | Bin 0 -> 38411 bytes .../data/3a20/2007.11.22a/rwlockRCUperfPREEMPT.eps | 874 + .../data/3a20/2007.11.22a/rwlockRCUperfPREEMPT.jpg | Bin 0 -> 41968 bytes .../data/3a20/2007.11.22a/rwlockRCUperfPREEMPT.pbm | Bin 0 -> 38411 bytes .../data/3a20/2007.11.22a/rwlockperfPREEMPT.dat | 16 + .../data/3a20/2007.11.22a/rwlockperfPREEMPTerr.dat | 16 + .../defer/data/3a20/2007.11.22a/todatall.sh | 5 + .../data/3a20/2007.11.26a/2.6.23-PREEMPT-wt.tar | Bin 0 -> 133120 bytes .../data/3a20/2007.11.26a/RCUperfwtPREEMPTerr.dat | 9 + .../3a20/2007.11.26a/atomicrefperfwtPREEMPTerr.dat | 9 + CodeSamples/defer/data/3a20/2007.11.26a/plots.sh | 48 + .../data/3a20/2007.11.26a/refRCUperfwtPREEMPT.eps | 574 + .../data/3a20/2007.11.26a/refRCUperfwtPREEMPT.jpg | Bin 0 -> 42700 bytes .../data/3a20/2007.11.26a/refRCUperfwtPREEMPT.pbm | Bin 0 -> 38411 bytes .../3a20/2007.11.26a/rwlockRCUperfwtPREEMPT.eps | 573 + .../3a20/2007.11.26a/rwlockRCUperfwtPREEMPT.jpg | Bin 0 -> 45016 bytes .../3a20/2007.11.26a/rwlockRCUperfwtPREEMPT.pbm | Bin 0 -> 38411 bytes .../3a20/2007.11.26a/rwlockperfwtPREEMPTerr.dat | 9 + CodeSamples/defer/data/3a20/2007.11.26a/todat.sh | 38 + .../defer/data/3a20/2007.11.26a/todatall.sh | 5 + .../2007.12.09a/2.6.23-PREEMPT.2007.12.09a.tar | Bin 0 -> 51200 bytes .../data/3a20/2007.12.09a/RCUperfwtPREEMPTerr.dat | 12 + .../3a20/2007.12.09a/atomicrefperfwtPREEMPTerr.dat | 12 + CodeSamples/defer/data/3a20/2007.12.09a/plots.sh | 48 + .../data/3a20/2007.12.09a/refRCUperfwtPREEMPT.eps | 622 + .../data/3a20/2007.12.09a/refRCUperfwtPREEMPT.gif | Bin 0 -> 4756 bytes .../data/3a20/2007.12.09a/refRCUperfwtPREEMPT.jpg | Bin 0 -> 42305 bytes .../data/3a20/2007.12.09a/refRCUperfwtPREEMPT.pbm | Bin 0 -> 38411 bytes .../3a20/2007.12.09a/rwlockRCUperfwtPREEMPT.eps | 621 + .../3a20/2007.12.09a/rwlockRCUperfwtPREEMPT.gif | Bin 0 -> 4940 bytes .../3a20/2007.12.09a/rwlockRCUperfwtPREEMPT.jpg | Bin 0 -> 45664 bytes .../3a20/2007.12.09a/rwlockRCUperfwtPREEMPT.pbm | Bin 0 -> 38411 bytes .../3a20/2007.12.09a/rwlockperfwtPREEMPTerr.dat | 12 + CodeSamples/defer/data/3a20/2007.12.09a/todat.sh | 38 + .../defer/data/3a20/2007.12.09a/todatall.sh | 5 + CodeSamples/defer/data/3a20/collect_p.sh | 29 + CodeSamples/defer/data/3a20/collect_pwt.sh | 30 + CodeSamples/defer/data/3a20/cpusummary.txt | 1 + CodeSamples/defer/data/3a20/data.tar | Bin 0 -> 71680 bytes CodeSamples/defer/data/3a20/reduce.sh | 29 + CodeSamples/defer/data/3a20/reduceerror.sh | 32 + CodeSamples/defer/data/3a20/todat.sh | 40 + CodeSamples/defer/hazptr.c | 166 + CodeSamples/defer/hazptr.h | 85 + CodeSamples/defer/hazptrtorture.h | 406 + FAQ.txt | 2 +- Makefile | 36 +- SMPdesign/1000-ms_2seqO3VfgO3_partO3-mean.eps | 771 + SMPdesign/500-ms_2seqO3VfgO3_partO3-median.eps | 779 + SMPdesign/500-ms_seqO3V2seqO3_fgO3_partO3-cdf.eps | 2238 + SMPdesign/500-ms_seqO3VfgO3_partO3-median.eps | 755 + SMPdesign/500-ms_seqVfg_part-cdf.eps | 1727 + SMPdesign/500-ms_seqVfg_part_seqO3-cdf.eps | 2238 + SMPdesign/500-ms_seq_fg-cdf.eps | 1663 + SMPdesign/500-ms_seq_fg_part-cdf.eps | 2174 + SMPdesign/500-pctVms_seq_part-sct.eps | 2162 + SMPdesign/MazeNumberPath.eps | 157 + SMPdesign/MazeNumberPath.fig | 27 + SMPdesign/SMPdesign.tex | 43 +- SMPdesign/beyond.tex | 647 + SMPdesign/lockdeq.eps | 501 - SMPdesign/lockdeq.fig | 88 +- SMPdesign/lockdeq.svg | 1142 + SMPdesign/lockdeqhash1R.eps | 10 +- SMPdesign/lockdeqhash1R.fig | 2 +- SMPdesign/lockdeqhashlots.eps | 15 +- SMPdesign/lockdeqhashlots.fig | 38 +- SMPdesign/maze_PWQ_vs_PART.eps | 597 + SMPdesign/maze_PWQ_vs_PART.fig | 310 + SMPdesign/maze_in_way10a.eps | 558 + SMPdesign/maze_in_way10a.fig | 298 + SMPdesign/partexercises.tex | 20 +- advsync/advsync.tex | 239 +- advsync/memorybarriers.tex | 104 +- appendix/ack/ack.tex | 10 +- appendix/appendix.tex | 3 +- appendix/rcuhist/RCUinLinux.tex | 218 +- appendix/rcuimpl/rcupreempt.tex | 4 +- appendix/rcuimpl/rcutree.tex | 2 +- appendix/rcuimpl/rcutreewt.tex | 2 +- appendix/rcuimpl/srcu.tex | 2 +- appendix/whymb/whymemorybarriers.tex | 8 +- bib | 1 - bib/OSS.bib | 865 + bib/RCU.bib | 1983 + bib/RCUuses.bib | 22 + bib/TM.bib | 844 + bib/WFS.bib | 399 + bib/energy.bib | 177 + bib/hw.bib | 717 + bib/maze.bib | 76 + bib/os.bib | 1198 + bib/parallelsys.bib | 328 + bib/patterns.bib | 66 + bib/perfmeas.bib | 150 + bib/realtime.bib | 542 + bib/refs.bib | 1256 + bib/search.bib | 32 + bib/standards.bib | 28 + bib/swtools.bib | 389 + bib/syncrefs.bib | 1204 + cartoons/2013-08-is-it-dead.eps | 41503 +++++++++++++++++++ cartoons/2013_Start-over.eps | 22859 ++++++++++ contrib.tex | 1 + count/count.tex | 67 +- cpu/hwfreelunch.tex | 2 +- cpu/overheads.tex | 3 + datastruct/datastruct.tex | 1543 +- datastruct/gethashplots.sh | 27 + datastruct/hashxu-a.svg | 414 + datastruct/hashxu-b.svg | 530 + datastruct/hashxu-c.svg | 527 + datastruct/hashxu-d.svg | 474 + datastruct/perftest.eps | 2252 + datastruct/perftestlin.eps | 2102 + datastruct/zipperhashgrow.svg | 1424 + datastruct/zipperhashshrink.svg | 1189 + datastruct/zoocatall.eps | 2210 + datastruct/zoocatalllin.eps | 2102 + datastruct/zoocatonly.eps | 2206 + datastruct/zoocatonlylin.eps | 2102 + datastruct/zoocpu.eps | 2327 ++ datastruct/zoocpubktlin.eps | 2106 + datastruct/zoocpubktlin8.eps | 2196 + datastruct/zoocpubktsizelin.eps | 2153 + datastruct/zoocpulin.eps | 2249 + datastruct/zooupdate.eps | 2268 + datastruct/zooupdatelu.eps | 2210 + datastruct/zooupdatelulin.eps | 2174 + debugging/debugging.tex | 214 +- defer/defer.tex | 17 +- defer/rcuexercises.tex | 8 +- defer/rcuusage.tex | 11 +- defer/refcnt.tex | 212 +- defer/seqlock.tex | 18 +- defer/toyrcu.tex | 2 +- defer/updates.tex | 36 + formal/cppmem.tex | 378 + {appendix/formal => formal}/dyntickrcu.tex | 350 +- {appendix/formal => formal}/formal.tex | 43 +- {appendix/formal => formal}/spinhint.tex | 30 +- future/future.tex | 119 +- future/htm.tex | 84 +- future/tm.tex | 819 +- glossary.tex | 10 + intro/intro.tex | 11 +- locking/locking.tex | 6 +- origpub.tex | 11 +- perfbook-1c.bbl | 6 +- perfbook.bbl | 350 +- perfbook.tex | 5 +- qqz.sty | 6 + qqz.tex | 4645 ++- todo.txt | 102 +- {applyrcu => together}/applyrcu.tex | 258 +- together/count.tex | 66 + together/hash.tex | 92 + together/together.tex | 17 + toolsoftrade/toolsoftrade.tex | 78 +- utilities/cleanpdf.sh | 35 + utilities/eps2pdf.sh | 11 + 293 files changed, 201862 insertions(+), 3700 deletions(-) create mode 100644 CodeSamples/count/count_stack.c create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/perf.sh.2013.12.02a.out create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/perftest.eps create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/perftest.hash_bkt.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/perftest.hash_bkt_hazptr.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/perftest.hash_bkt_rcu.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/perftest.hash_global.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/perftestlin.eps create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.cat.hash_bkt.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.cat.hash_bkt_hazptr.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.cat.hash_bkt_rcu.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.cat.hash_global.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.catall.hash_bkt.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.catall.hash_bkt_hazptr.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.catall.hash_bkt_rcu.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.catall.hash_global.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.cpus.hash_bkt-16384.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.cpus.hash_bkt-2048.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.cpus.hash_bkt-4096.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.cpus.hash_bkt-8192.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.cpus.hash_bkt.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.cpus.hash_bkt_hazptr-16384.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.cpus.hash_bkt_hazptr-2048.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.cpus.hash_bkt_hazptr-4096.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.cpus.hash_bkt_hazptr-8192.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.cpus.hash_bkt_hazptr.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.cpus.hash_bkt_rcu-16384.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.cpus.hash_bkt_rcu-2048.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.cpus.hash_bkt_rcu-4096.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.cpus.hash_bkt_rcu-8192.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.cpus.hash_bkt_rcu.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.cpus.hash_global-16384.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.cpus.hash_global-2048.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.cpus.hash_global-4096.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.cpus.hash_global-8192.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.cpus.hash_global.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.mix.hash_bkt.2013.12.02a.out create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.mix.hash_bkt_hazptr.2013.12.02a.out create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.mix.hash_bkt_rcu.2013.12.02a.out create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.mix.hash_global.2013.12.02a.out create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.reads.hash_bkt.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.reads.hash_bkt_hazptr.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.reads.hash_bkt_rcu.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.reads.hash_global.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.upd.hash_bkt.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.upd.hash_bkt_hazptr.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.upd.hash_bkt_rcu.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.upd.hash_global.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.updates.hash_bkt.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.updates.hash_bkt_hazptr.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.updates.hash_bkt_rcu.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.updates.hash_global.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.updrd.hash_bkt.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.updrd.hash_bkt_hazptr.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.updrd.hash_bkt_rcu.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoo.updrd.hash_global.2013.12.02a.dat create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoocatall.eps create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoocatalllin.eps create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoocatonly.eps create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoocatonlylin.eps create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoocpu.eps create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoocpubktlin.eps create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoocpubktlin8.eps create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoocpubktsizelin.eps create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zoocpulin.eps create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zooupdate.eps create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zooupdatelu.eps create mode 100644 CodeSamples/datastruct/data/hash.2013.12.02a/zooupdatelulin.eps create mode 100644 CodeSamples/datastruct/hash_bkt_hazptr.c create mode 100644 CodeSamples/datastruct/hash_resize.c create mode 100644 CodeSamples/datastruct/perf-resize.sh create mode 100644 CodeSamples/datastruct/perf.sh create mode 100644 CodeSamples/datastruct/plots.sh create mode 100644 CodeSamples/datastruct/reduce.sh create mode 100644 CodeSamples/defer/data/3a20/2.6.3-nonPREEMPT.tar create mode 100644 CodeSamples/defer/data/3a20/2007.11.19a/RCUperf.dat create mode 100644 CodeSamples/defer/data/3a20/2007.11.19a/RCUperfdbg.dat create mode 100644 CodeSamples/defer/data/3a20/2007.11.19a/RCUperfnonPREEMPTerr.dat create mode 100644 CodeSamples/defer/data/3a20/2007.11.19a/cpuinfo create mode 100644 CodeSamples/defer/data/3a20/2007.11.19a/plots.sh create mode 100644 CodeSamples/defer/data/3a20/2007.11.19a/rwlockRCUperf.eps create mode 100644 CodeSamples/defer/data/3a20/2007.11.19a/rwlockRCUperf.jpg create mode 100644 CodeSamples/defer/data/3a20/2007.11.19a/rwlockRCUperf.pbm create mode 100644 CodeSamples/defer/data/3a20/2007.11.19a/rwlockRCUperfdbg.eps create mode 100644 CodeSamples/defer/data/3a20/2007.11.19a/rwlockRCUperfdbg.jpg create mode 100644 CodeSamples/defer/data/3a20/2007.11.19a/rwlockRCUperfdbg.pbm create mode 100644 CodeSamples/defer/data/3a20/2007.11.19a/rwlockperf.dat create mode 100644 CodeSamples/defer/data/3a20/2007.11.19a/rwlockperfdbg.dat create mode 100644 CodeSamples/defer/data/3a20/2007.11.19a/rwlockperfnonPREEMPTerr.dat create mode 100644 CodeSamples/defer/data/3a20/2007.11.19a/todatall.sh create mode 100644 CodeSamples/defer/data/3a20/2007.11.20a/2.6.23-PREEMPT.tar create mode 100644 CodeSamples/defer/data/3a20/2007.11.20a/RCUperfPREEMPT.dat create mode 100644 CodeSamples/defer/data/3a20/2007.11.20a/RCUperfPREEMPTerr.dat create mode 100644 CodeSamples/defer/data/3a20/2007.11.20a/plots.sh create mode 100644 CodeSamples/defer/data/3a20/2007.11.20a/rwlockRCUperfPREEMPT.eps create mode 100644 CodeSamples/defer/data/3a20/2007.11.20a/rwlockRCUperfPREEMPT.jpg create mode 100644 CodeSamples/defer/data/3a20/2007.11.20a/rwlockRCUperfPREEMPT.pbm create mode 100644 CodeSamples/defer/data/3a20/2007.11.20a/rwlockperfPREEMPT.dat create mode 100644 CodeSamples/defer/data/3a20/2007.11.20a/todatall.sh create mode 100644 CodeSamples/defer/data/3a20/2007.11.22a/2.6.23-PREEMPT-ref.tar create mode 100644 CodeSamples/defer/data/3a20/2007.11.22a/2.6.23-PREEMPT-rwlock.tar create mode 100644 CodeSamples/defer/data/3a20/2007.11.22a/2.6.23-PREEMPT.tar create mode 100644 CodeSamples/defer/data/3a20/2007.11.22a/RCUperfPREEMPT.dat create mode 100644 CodeSamples/defer/data/3a20/2007.11.22a/RCUperfPREEMPTerr.dat create mode 100644 CodeSamples/defer/data/3a20/2007.11.22a/atomicincperfPREEMPT.dat create mode 100644 CodeSamples/defer/data/3a20/2007.11.22a/atomicincperfPREEMPTerr.dat create mode 100644 CodeSamples/defer/data/3a20/2007.11.22a/atomicrefperfPREEMPT.dat create mode 100644 CodeSamples/defer/data/3a20/2007.11.22a/atomicrefperfPREEMPTerr.dat create mode 100644 CodeSamples/defer/data/3a20/2007.11.22a/plots.sh create mode 100644 CodeSamples/defer/data/3a20/2007.11.22a/refRCUperfPREEMPT.eps create mode 100644 CodeSamples/defer/data/3a20/2007.11.22a/refRCUperfPREEMPT.jpg create mode 100644 CodeSamples/defer/data/3a20/2007.11.22a/refRCUperfPREEMPT.pbm create mode 100644 CodeSamples/defer/data/3a20/2007.11.22a/rwlockRCUperfPREEMPT.eps create mode 100644 CodeSamples/defer/data/3a20/2007.11.22a/rwlockRCUperfPREEMPT.jpg create mode 100644 CodeSamples/defer/data/3a20/2007.11.22a/rwlockRCUperfPREEMPT.pbm create mode 100644 CodeSamples/defer/data/3a20/2007.11.22a/rwlockperfPREEMPT.dat create mode 100644 CodeSamples/defer/data/3a20/2007.11.22a/rwlockperfPREEMPTerr.dat create mode 100644 CodeSamples/defer/data/3a20/2007.11.22a/todatall.sh create mode 100644 CodeSamples/defer/data/3a20/2007.11.26a/2.6.23-PREEMPT-wt.tar create mode 100644 CodeSamples/defer/data/3a20/2007.11.26a/RCUperfwtPREEMPTerr.dat create mode 100644 CodeSamples/defer/data/3a20/2007.11.26a/atomicrefperfwtPREEMPTerr.dat create mode 100644 CodeSamples/defer/data/3a20/2007.11.26a/plots.sh create mode 100644 CodeSamples/defer/data/3a20/2007.11.26a/refRCUperfwtPREEMPT.eps create mode 100644 CodeSamples/defer/data/3a20/2007.11.26a/refRCUperfwtPREEMPT.jpg create mode 100644 CodeSamples/defer/data/3a20/2007.11.26a/refRCUperfwtPREEMPT.pbm create mode 100644 CodeSamples/defer/data/3a20/2007.11.26a/rwlockRCUperfwtPREEMPT.eps create mode 100644 CodeSamples/defer/data/3a20/2007.11.26a/rwlockRCUperfwtPREEMPT.jpg create mode 100644 CodeSamples/defer/data/3a20/2007.11.26a/rwlockRCUperfwtPREEMPT.pbm create mode 100644 CodeSamples/defer/data/3a20/2007.11.26a/rwlockperfwtPREEMPTerr.dat create mode 100755 CodeSamples/defer/data/3a20/2007.11.26a/todat.sh create mode 100644 CodeSamples/defer/data/3a20/2007.11.26a/todatall.sh create mode 100644 CodeSamples/defer/data/3a20/2007.12.09a/2.6.23-PREEMPT.2007.12.09a.tar create mode 100644 CodeSamples/defer/data/3a20/2007.12.09a/RCUperfwtPREEMPTerr.dat create mode 100644 CodeSamples/defer/data/3a20/2007.12.09a/atomicrefperfwtPREEMPTerr.dat create mode 100644 CodeSamples/defer/data/3a20/2007.12.09a/plots.sh create mode 100644 CodeSamples/defer/data/3a20/2007.12.09a/refRCUperfwtPREEMPT.eps create mode 100644 CodeSamples/defer/data/3a20/2007.12.09a/refRCUperfwtPREEMPT.gif create mode 100644 CodeSamples/defer/data/3a20/2007.12.09a/refRCUperfwtPREEMPT.jpg create mode 100644 CodeSamples/defer/data/3a20/2007.12.09a/refRCUperfwtPREEMPT.pbm create mode 100644 CodeSamples/defer/data/3a20/2007.12.09a/rwlockRCUperfwtPREEMPT.eps create mode 100644 CodeSamples/defer/data/3a20/2007.12.09a/rwlockRCUperfwtPREEMPT.gif create mode 100644 CodeSamples/defer/data/3a20/2007.12.09a/rwlockRCUperfwtPREEMPT.jpg create mode 100644 CodeSamples/defer/data/3a20/2007.12.09a/rwlockRCUperfwtPREEMPT.pbm create mode 100644 CodeSamples/defer/data/3a20/2007.12.09a/rwlockperfwtPREEMPTerr.dat create mode 100755 CodeSamples/defer/data/3a20/2007.12.09a/todat.sh create mode 100644 CodeSamples/defer/data/3a20/2007.12.09a/todatall.sh create mode 100644 CodeSamples/defer/data/3a20/collect_p.sh create mode 100644 CodeSamples/defer/data/3a20/collect_pwt.sh create mode 100644 CodeSamples/defer/data/3a20/cpusummary.txt create mode 100644 CodeSamples/defer/data/3a20/data.tar create mode 100644 CodeSamples/defer/data/3a20/reduce.sh create mode 100644 CodeSamples/defer/data/3a20/reduceerror.sh create mode 100755 CodeSamples/defer/data/3a20/todat.sh create mode 100644 CodeSamples/defer/hazptr.c create mode 100644 CodeSamples/defer/hazptr.h create mode 100644 CodeSamples/defer/hazptrtorture.h create mode 100644 SMPdesign/1000-ms_2seqO3VfgO3_partO3-mean.eps create mode 100644 SMPdesign/500-ms_2seqO3VfgO3_partO3-median.eps create mode 100644 SMPdesign/500-ms_seqO3V2seqO3_fgO3_partO3-cdf.eps create mode 100644 SMPdesign/500-ms_seqO3VfgO3_partO3-median.eps create mode 100644 SMPdesign/500-ms_seqVfg_part-cdf.eps create mode 100644 SMPdesign/500-ms_seqVfg_part_seqO3-cdf.eps create mode 100644 SMPdesign/500-ms_seq_fg-cdf.eps create mode 100644 SMPdesign/500-ms_seq_fg_part-cdf.eps create mode 100644 SMPdesign/500-pctVms_seq_part-sct.eps create mode 100644 SMPdesign/MazeNumberPath.eps create mode 100644 SMPdesign/MazeNumberPath.fig create mode 100644 SMPdesign/beyond.tex delete mode 100644 SMPdesign/lockdeq.eps create mode 100644 SMPdesign/lockdeq.svg create mode 100644 SMPdesign/maze_PWQ_vs_PART.eps create mode 100644 SMPdesign/maze_PWQ_vs_PART.fig create mode 100644 SMPdesign/maze_in_way10a.eps create mode 100644 SMPdesign/maze_in_way10a.fig delete mode 120000 bib create mode 100644 bib/OSS.bib create mode 100644 bib/RCU.bib create mode 100644 bib/RCUuses.bib create mode 100644 bib/TM.bib create mode 100644 bib/WFS.bib create mode 100644 bib/energy.bib create mode 100644 bib/hw.bib create mode 100644 bib/maze.bib create mode 100644 bib/os.bib create mode 100644 bib/parallelsys.bib create mode 100644 bib/patterns.bib create mode 100644 bib/perfmeas.bib create mode 100644 bib/realtime.bib create mode 100644 bib/refs.bib create mode 100644 bib/search.bib create mode 100644 bib/standards.bib create mode 100644 bib/swtools.bib create mode 100644 bib/syncrefs.bib create mode 100644 cartoons/2013-08-is-it-dead.eps create mode 100644 cartoons/2013_Start-over.eps create mode 100644 datastruct/gethashplots.sh create mode 100644 datastruct/hashxu-a.svg create mode 100644 datastruct/hashxu-b.svg create mode 100644 datastruct/hashxu-c.svg create mode 100644 datastruct/hashxu-d.svg create mode 100644 datastruct/perftest.eps create mode 100644 datastruct/perftestlin.eps create mode 100644 datastruct/zipperhashgrow.svg create mode 100644 datastruct/zipperhashshrink.svg create mode 100644 datastruct/zoocatall.eps create mode 100644 datastruct/zoocatalllin.eps create mode 100644 datastruct/zoocatonly.eps create mode 100644 datastruct/zoocatonlylin.eps create mode 100644 datastruct/zoocpu.eps create mode 100644 datastruct/zoocpubktlin.eps create mode 100644 datastruct/zoocpubktlin8.eps create mode 100644 datastruct/zoocpubktsizelin.eps create mode 100644 datastruct/zoocpulin.eps create mode 100644 datastruct/zooupdate.eps create mode 100644 datastruct/zooupdatelu.eps create mode 100644 datastruct/zooupdatelulin.eps create mode 100644 defer/updates.tex create mode 100644 formal/cppmem.tex rename {appendix/formal => formal}/dyntickrcu.tex (90%) rename {appendix/formal => formal}/formal.tex (67%) rename {appendix/formal => formal}/spinhint.tex (98%) rename {applyrcu => together}/applyrcu.tex (62%) create mode 100644 together/count.tex create mode 100644 together/hash.tex create mode 100644 together/together.tex create mode 100644 utilities/cleanpdf.sh