mirror of
https://github.com/cirosantilli/linux-kernel-module-cheat.git
synced 2026-01-23 02:05:57 +01:00
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:
@@ -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},
|
||||||
|
|||||||
@@ -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++;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user