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