diff options
Diffstat (limited to 'examples/test_burst.c')
-rw-r--r-- | examples/test_burst.c | 35 |
1 files changed, 26 insertions, 9 deletions
diff --git a/examples/test_burst.c b/examples/test_burst.c index ba23f14..f09707f 100644 --- a/examples/test_burst.c +++ b/examples/test_burst.c @@ -88,10 +88,11 @@ static unsigned long test_pattern [] = { int test_burst (int argc, char *argv[]) { unsigned long size = CACHE_LINE_SIZE; - int res; - int i; + unsigned int pass = 0; + int res = 0; + int i, j; - if (argc == 2) { + if (argc == 3) { char * d; for (size = 0, d = argv[1]; *d >= '0' && *d <= '9'; d++) { size *= 10; @@ -101,7 +102,15 @@ int test_burst (int argc, char *argv[]) test_usage(); return 1; } - } else if (argc > 2) { + for (d = argv[2]; *d >= '0' && *d <= '9'; d++) { + pass *= 10; + pass += *d - '0'; + } + if (*d) { + test_usage(); + return 1; + } + } else if (argc > 3) { test_usage(); return 1; } @@ -115,11 +124,19 @@ int test_burst (int argc, char *argv[]) test_desc(size); - for (i = 0; i < sizeof(test_pattern) / sizeof(test_pattern[0]); i++) { - res = test_burst_start(size, test_pattern[i]); - if (res != 0) { - goto Done; + for (j = 0; !pass || j < pass; j++) { + for (i = 0; i < sizeof(test_pattern) / sizeof(test_pattern[0]); + i++) { + res = test_burst_start(size, test_pattern[i]); + if (res != 0) { + goto Done; + } } + + printf ("Iteration #%d passed\n", j + 1); + + if (tstc() && 0x03 == getc()) + break; } Done: return res; @@ -298,5 +315,5 @@ static void signal_error(void) static void test_usage(void) { - printf("Usage: go 0x40004 [size]\n"); + printf("Usage: go 0x40004 [size] [count]\n"); } |