			============
			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.
