2023-08-30 17:31:07 +02:00
|
|
|
============
|
|
|
|
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.
|
2023-10-24 12:59:35 +02:00
|
|
|
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.
|
2023-08-30 17:31:07 +02:00
|
|
|
|
|
|
|
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
|
|
|
|
|
2023-10-24 12:59:35 +02:00
|
|
|
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.
|
2023-08-30 17:31:07 +02:00
|
|
|
|
|
|
|
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
|
2023-10-24 12:59:35 +02:00
|
|
|
|
|
|
|
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.
|