diff options
-rw-r--r-- | testsuites/ChangeLog | 6 | ||||
-rw-r--r-- | testsuites/support/include/buffer_test_io.h | 256 |
2 files changed, 166 insertions, 96 deletions
diff --git a/testsuites/ChangeLog b/testsuites/ChangeLog index 473b5845f6..cbb0510063 100644 --- a/testsuites/ChangeLog +++ b/testsuites/ChangeLog @@ -1,3 +1,9 @@ +2007-05-11 Joel Sherrill <joel.sherrill@OARcorp.com> + + * support/include/buffer_test_io.h: Add support for using printk for + output in tests. This should be followed up by disabling the console + driver and other support when the tests are using printk. + 2007-02-11 Ralf Corsépius <ralf.corsepius@rtems.org> * aclocal/check-cpuopts.m4: Check rtems/system.h instead of diff --git a/testsuites/support/include/buffer_test_io.h b/testsuites/support/include/buffer_test_io.h index 764170710c..aee3f53723 100644 --- a/testsuites/support/include/buffer_test_io.h +++ b/testsuites/support/include/buffer_test_io.h @@ -11,113 +11,177 @@ extern "C" { #endif -#include <stdlib.h> - /* * Uncomment this to get buffered test output. When commented out, - * test output behaves as it always has and is printed ASAP. + * test output behaves as it always has and is printed using stdio. */ /* #define TESTS_BUFFER_OUTPUT */ +/* #define TESTS_USE_PRINTK */ -#if !defined(TESTS_BUFFER_OUTPUT) +/* + * USE PRINTK TO MINIMIZE SIZE + */ +#if defined(TESTS_USE_PRINTK) + +#include <rtems/bspIo.h> + + #undef printf + #define printf(...) \ + do { \ + printk( __VA_ARGS__); \ + } while (0) + + #undef puts + #define puts(_s) \ + do { \ + printk( "%s\n", _s); \ + } while (0) + + #undef putchar + #define putchar(_c) \ + do { \ + printk( "%c", _c ); \ + } while (0) + + /* Do not call exit() since it closes stdin, etc and pulls in stdio code */ + #define rtems_test_exit(_s) \ + do { \ + rtems_shutdown_executive(0); \ + } while (0) + + #define FLUSH_OUTPUT() \ + do { \ + } while (0) -/* do not use iprintf if strict ansi mode */ -#if defined(_NEWLIB_VERSION) && !defined(__STRICT_ANSI__) -#undef printf -#define printf(...) \ - do { \ - iprintf( __VA_ARGS__); \ - } while (0) -#endif +/* + * BUFFER TEST OUTPUT + */ +#elif defined(TESTS_BUFFER_OUTPUT) + + #include <stdio.h> + #include <stdlib.h> + + #define _TEST_OUTPUT_BUFFER_SIZE 2048 + extern char _test_output_buffer[_TEST_OUTPUT_BUFFER_SIZE]; + void _test_output_append(char *); + void _test_output_flush(void); + + #define rtems_test_exit(_s) \ + do { \ + _test_output_flush(); \ + exit(_s); \ + } while (0) + + #undef printf + #define printf(...) \ + do { \ + char _buffer[128]; \ + sprintf( _buffer, __VA_ARGS__); \ + _test_output_append( _buffer ); \ + } while (0) + + #undef puts + #define puts(_string) \ + do { \ + char _buffer[128]; \ + sprintf( _buffer, "%s\n", _string ); \ + _test_output_append( _buffer ); \ + } while (0) + + #undef putchar + #define putchar(_c) \ + do { \ + char _buffer[2]; \ + _buffer[0] = _c; \ + _buffer[1] = '\0'; \ + _test_output_append( _buffer ); \ + } while (0) + + /* we write to stderr when there is a pause() */ + #define FLUSH_OUTPUT() _test_output_flush() + + #if defined(TEST_INIT) || defined(CONFIGURE_INIT) + + char _test_output_buffer[_TEST_OUTPUT_BUFFER_SIZE]; + int _test_output_buffer_index = 0; + + void _test_output_append(char *_buffer) + { + char *p; + + for ( p=_buffer ; *p ; p++ ) { + _test_output_buffer[_test_output_buffer_index++] = *p; + _test_output_buffer[_test_output_buffer_index] = '\0'; + #if 0 + if ( *p == '\n' ) { + fprintf( stderr, "BUFFER -- %s", _test_output_buffer ); + _test_output_buffer_index = 0; + _test_output_buffer[0] = '\0'; + } + #endif + if ( _test_output_buffer_index >= (_TEST_OUTPUT_BUFFER_SIZE - 80) ) + _test_output_flush(); + } + } + + #include <termios.h> + #include <unistd.h> -#define rtems_test_exit(_s) \ - do { \ - exit(_s); \ - } while (0) - -#define FLUSH_OUTPUT() \ - do { \ - fflush(stdout); \ - } while (0) - -#else /* buffer test output */ - -#define _TEST_OUTPUT_BUFFER_SIZE 2048 -extern char _test_output_buffer[_TEST_OUTPUT_BUFFER_SIZE]; -void _test_output_append(char *); -void _test_output_flush(void); - -#define rtems_test_exit(_s) \ - do { \ - _test_output_flush(); \ - exit(_s); \ - } while (0) - -#undef printf -#define printf(...) \ - do { \ - char _buffer[128]; \ - sprintf( _buffer, __VA_ARGS__); \ - _test_output_append( _buffer ); \ - } while (0) - -#undef puts -#define puts(_string) \ - do { \ - char _buffer[128]; \ - sprintf( _buffer, "%s\n", _string ); \ - _test_output_append( _buffer ); \ - } while (0) - -#undef putchar -#define putchar(_c) \ - do { \ - char _buffer[2]; \ - _buffer[0] = _c; \ - _buffer[1] = '\0'; \ - _test_output_append( _buffer ); \ - } while (0) - -/* we write to stderr when there is a pause() */ -#define FLUSH_OUTPUT() _test_output_flush() - -#if defined(TEST_INIT) || defined(CONFIGURE_INIT) - -char _test_output_buffer[_TEST_OUTPUT_BUFFER_SIZE]; -int _test_output_buffer_index = 0; - -void _test_output_append(char *_buffer) -{ - char *p; - - for ( p=_buffer ; *p ; p++ ) { - _test_output_buffer[_test_output_buffer_index++] = *p; - _test_output_buffer[_test_output_buffer_index] = '\0'; -#if 0 - if ( *p == '\n' ) { - fprintf( stderr, "BUFFER -- %s", _test_output_buffer ); + void _test_output_flush(void) + { + fprintf( stderr, "%s", _test_output_buffer ); _test_output_buffer_index = 0; - _test_output_buffer[0] = '\0'; + tcdrain( 2 ); } + + #endif +/* + * USE IPRINT + */ +#else + + #include <stdio.h> + #include <stdlib.h> + + /* do not use iprintf if strict ansi mode */ + #if defined(_NEWLIB_VERSION) && !defined(__STRICT_ANSI__) + #undef printf + #define printf(...) \ + do { \ + fiprintf( stderr, __VA_ARGS__ ); \ + } while (0) + #else + #undef printf + #define printf(...) \ + do { \ + fprintf( stderr, __VA_ARGS__ ); \ + } while (0) + #endif + + #undef puts + #define puts(_s) \ + do { \ + printf( "%s\n", _s ); \ + } while (0) + + #undef putchar + #define putchar(_c) \ + do { \ + printf( "%c", _c ); \ + } while (0) + + #define rtems_test_exit(_s) \ + do { \ + exit(_s); \ + } while (0) + + #define FLUSH_OUTPUT() \ + do { \ + fflush(stdout); \ + } while (0) + #endif - if ( _test_output_buffer_index >= (_TEST_OUTPUT_BUFFER_SIZE - 80) ) - _test_output_flush(); - } -} - -#include <termios.h> -#include <unistd.h> - -void _test_output_flush(void) -{ - fprintf( stderr, "%s", _test_output_buffer ); - _test_output_buffer_index = 0; - tcdrain( 2 ); -} - -#endif /* TEST_INIT */ -#endif /* TESTS_BUFFER_OUTPUT */ #ifdef __cplusplus }; |