infinite_loop.c: document better, allow 0 magic value to not print

Enable test by passing arguments to the test to limit loops.

gem5 arm LSE: still skipped, but add a link to the master patch that was merged.
This commit is contained in:
Ciro Santilli 六四事件 法轮功
2019-09-07 00:00:00 +00:00
parent a1cf89efba
commit d1d12e4b43
2 changed files with 16 additions and 13 deletions

View File

@@ -474,21 +474,16 @@ path_properties_tuples = (
'baremetal': True, 'baremetal': True,
}, },
{ {
'abort.c': { 'abort.c': {'signal_received': signal.Signals.SIGABRT},
'signal_received': signal.Signals.SIGABRT, 'assert_fail.c': {'signal_received': signal.Signals.SIGABRT},
}, # This has complex failure modes, too hard to assert.
'assert_fail.c': { 'smash_stack.c': {'skip_run_unclassified': True},
'signal_received': signal.Signals.SIGABRT,
},
'smash_stack.c': {
'skip_run_unclassified': True,
},
'exit1.c': {'exit_status': 1}, 'exit1.c': {'exit_status': 1},
'exit2.c': {'exit_status': 2}, 'exit2.c': {'exit_status': 2},
'false.c': {'exit_status': 1}, 'false.c': {'exit_status': 1},
'file_write_read.c': {'baremetal': False}, 'file_write_read.c': {'baremetal': False},
'getchar.c': {'interactive': True}, 'getchar.c': {'interactive': True},
'infinite_loop.c': {'more_than_1s': True}, 'infinite_loop.c': {'test_run_args': {'userland_args': '1 10'}},
'malloc_max.c': {'disrupts_system': True}, 'malloc_max.c': {'disrupts_system': True},
'return1.c': {'exit_status': 1}, 'return1.c': {'exit_status': 1},
'return2.c': {'exit_status': 2}, 'return2.c': {'exit_status': 2},
@@ -500,6 +495,9 @@ path_properties_tuples = (
'atomic.cpp': { 'atomic.cpp': {
'test_run_args': {'cpus': 3}, 'test_run_args': {'cpus': 3},
# LDADD from LSE # LDADD from LSE
# https://cirosantilli.com/linux-kernel-module-cheat#arm-lse
# Implemented on master:
# https://gem5-review.googlesource.com/c/public/gem5/+/19812
'gem5_unimplemented_instruction': True, 'gem5_unimplemented_instruction': True,
}, },
'count.cpp': {'more_than_1s': True}, 'count.cpp': {'more_than_1s': True},

View File

@@ -1,10 +1,15 @@
/* https://cirosantilli.com/linux-kernel-module-cheat#c /* https://cirosantilli.com/linux-kernel-module-cheat#c
* *
* Loop infinitely. Print an integer whenever a period is reached: * Loop and print an integer whenever a period is reached:
* *
* .... * ....
* ./infinite_loop [period] * ./infinite_loop [period=100000000 [max=0]]
* .... * ....
*
* * period: period for printing integers to stdout
* 0 means disable printing.
* * max: Stop counting when max is reached.
* 0 means count to infinity.
*/ */
#include <inttypes.h> #include <inttypes.h>
@@ -30,7 +35,7 @@ int main(int argc, char **argv) {
j = 0; j = 0;
while (1) { while (1) {
i++; i++;
if (i % period == 0) { if (period != 0 && i % period == 0) {
printf("%ju\n", j); printf("%ju\n", j);
j++; j++;
} }