| 			============ | 
 | 			LKMM SCRIPTS | 
 | 			============ | 
 |  | 
 |  | 
 | These scripts are run from the tools/memory-model directory. | 
 |  | 
 | checkalllitmus.sh | 
 |  | 
 | 	Run all litmus tests in the litmus-tests directory, checking | 
 | 	the results against the expected results recorded in the | 
 | 	"Result:" comment lines. | 
 |  | 
 | checkghlitmus.sh | 
 |  | 
 | 	Run all litmus tests in the https://github.com/paulmckrcu/litmus | 
 | 	archive that are C-language and that have "Result:" comment lines | 
 | 	documenting expected results, comparing the actual results to | 
 | 	those expected. | 
 |  | 
 | checklitmushist.sh | 
 |  | 
 | 	Run all litmus tests having .litmus.out files from previous | 
 | 	initlitmushist.sh or newlitmushist.sh runs, comparing the | 
 | 	herd7 output to that of the original runs. | 
 |  | 
 | checklitmus.sh | 
 |  | 
 | 	Check a single litmus test against its "Result:" expected result. | 
 | 	Not intended to for manual use. | 
 |  | 
 | checktheselitmus.sh | 
 |  | 
 | 	Check the specified list of litmus tests against their "Result:" | 
 | 	expected results.  This takes optional parseargs.sh arguments, | 
 | 	followed by "--" followed by pathnames starting from the current | 
 | 	directory. | 
 |  | 
 | cmplitmushist.sh | 
 |  | 
 | 	Compare output from two different runs of the same litmus tests, | 
 | 	with the absolute pathnames of the tests to run provided one | 
 | 	name per line on standard input.  Not normally run manually, | 
 | 	provided instead for use by other scripts. | 
 |  | 
 | initlitmushist.sh | 
 |  | 
 | 	Run all litmus tests having no more than the specified number | 
 | 	of processes given a specified timeout, recording the results | 
 | 	in .litmus.out files. | 
 |  | 
 | judgelitmus.sh | 
 |  | 
 | 	Given a .litmus file and its herd7 output, check the output file | 
 | 	against the .litmus file's "Result:" comment to judge whether | 
 | 	the test ran correctly.  Not normally run manually, provided | 
 | 	instead for use by other scripts. | 
 |  | 
 | newlitmushist.sh | 
 |  | 
 | 	For all new or updated litmus tests having no more than the | 
 | 	specified number of processes given a specified timeout, run | 
 | 	and record the results in .litmus.out files. | 
 |  | 
 | parseargs.sh | 
 |  | 
 | 	Parse command-line arguments.  Not normally run manually, | 
 | 	provided instead for use by other scripts. | 
 |  | 
 | runlitmushist.sh | 
 |  | 
 | 	Run the litmus tests whose absolute pathnames are provided one | 
 | 	name per line on standard input.  Not normally run manually, | 
 | 	provided instead for use by other scripts. | 
 |  | 
 | README | 
 |  | 
 | 	This file | 
 |  | 
 | Testing a change to LKMM might go as follows: | 
 |  | 
 | 	# Populate expected results without that change, and | 
 | 	# runs for about an hour on an 8-CPU x86 system: | 
 | 	scripts/initlitmushist.sh --timeout 10m --procs 10 | 
 | 	# Incorporate the change: | 
 | 	git am -s -3 /path/to/patch # Or whatever it takes. | 
 |  | 
 | 	# Test the new version of LKMM as follows... | 
 |  | 
 | 	# Runs in seconds, good smoke test: | 
 | 	scripts/checkalllitmus.sh | 
 |  | 
 | 	# Compares results to those produced by initlitmushist.sh, | 
 | 	# and runs for about an hour on an 8-CPU x86 system: | 
 | 	scripts/checklitmushist.sh --timeout 10m --procs 10 | 
 |  | 
 | 	# Checks results against Result tags, runs in minutes: | 
 | 	scripts/checkghlitmus.sh --timeout 10m --procs 10 | 
 |  | 
 | The checkghlitmus.sh should not report errors in cases where the | 
 | checklitmushist.sh script did not also report a change.  However, | 
 | this check is nevertheless valuable because it can find errors in the | 
 | original version of LKMM.  Note however, that given the above procedure, | 
 | an error in the original LKMM version that is fixed by the patch will | 
 | be reported both as a mismatch by checklitmushist.sh and as an error | 
 | by checkghlitmus.sh.  One exception to this rule of thumb is when the | 
 | test fails completely on the original version of LKMM and passes on the | 
 | new version.  In this case, checklitmushist.sh will report a mismatch | 
 | and checkghlitmus.sh will report success.  This happens when the change | 
 | to LKMM introduces a new primitive for which litmus tests already existed. |