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