summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--testsuites/ChangeLog6
-rw-r--r--testsuites/support/include/buffer_test_io.h256
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
};