Changeset 71531a6 in rtems for testsuites/support


Ignore:
Timestamp:
May 11, 2007, 7:53:29 PM (13 years ago)
Author:
Joel Sherrill <joel.sherrill@…>
Branches:
4.10, 4.11, 4.8, 4.9, master
Children:
e974f9d7
Parents:
9de4e5b
Message:

2007-05-11 Joel Sherrill <joel.sherrill@…>

  • 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.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • testsuites/support/include/buffer_test_io.h

    r9de4e5b r71531a6  
    1212#endif
    1313
    14 #include <stdlib.h>
    15 
    1614/*
    1715 *  Uncomment this to get buffered test output.  When commented out,
    18  *  test output behaves as it always has and is printed ASAP.
     16 *  test output behaves as it always has and is printed using stdio.
    1917 */
    2018
    2119/* #define TESTS_BUFFER_OUTPUT */
     20/* #define TESTS_USE_PRINTK */
    2221
    23 #if !defined(TESTS_BUFFER_OUTPUT)
     22/*
     23 *  USE PRINTK TO MINIMIZE SIZE
     24 */
     25#if defined(TESTS_USE_PRINTK)
    2426
    25 /* do not use iprintf if strict ansi mode */
    26 #if defined(_NEWLIB_VERSION) && !defined(__STRICT_ANSI__)
    27 #undef printf
    28 #define printf(...) \
    29   do { \
    30      iprintf( __VA_ARGS__); \
    31   } while (0)
     27#include <rtems/bspIo.h>
     28
     29  #undef printf
     30  #define printf(...) \
     31    do { \
     32       printk( __VA_ARGS__); \
     33    } while (0)
     34
     35  #undef puts
     36  #define puts(_s) \
     37    do { \
     38       printk( "%s\n", _s); \
     39    } while (0)
     40
     41  #undef putchar
     42  #define putchar(_c) \
     43    do { \
     44       printk( "%c", _c ); \
     45    } while (0)
     46
     47  /* Do not call exit() since it closes stdin, etc and pulls in stdio code */
     48  #define rtems_test_exit(_s) \
     49    do { \
     50      rtems_shutdown_executive(0); \
     51    } while (0)
     52
     53  #define FLUSH_OUTPUT() \
     54    do { \
     55    } while (0)
     56
     57/*
     58 *  BUFFER TEST OUTPUT
     59 */
     60#elif defined(TESTS_BUFFER_OUTPUT)
     61
     62  #include <stdio.h>
     63  #include <stdlib.h>
     64
     65  #define _TEST_OUTPUT_BUFFER_SIZE 2048
     66  extern char _test_output_buffer[_TEST_OUTPUT_BUFFER_SIZE];
     67  void _test_output_append(char *);
     68  void _test_output_flush(void);
     69
     70  #define rtems_test_exit(_s) \
     71    do { \
     72      _test_output_flush(); \
     73      exit(_s); \
     74    } while (0)
     75
     76  #undef printf
     77  #define printf(...) \
     78    do { \
     79       char _buffer[128]; \
     80       sprintf( _buffer, __VA_ARGS__); \
     81       _test_output_append( _buffer ); \
     82    } while (0)
     83
     84  #undef puts
     85  #define puts(_string) \
     86    do { \
     87       char _buffer[128]; \
     88       sprintf( _buffer, "%s\n", _string ); \
     89       _test_output_append( _buffer ); \
     90    } while (0)
     91
     92  #undef putchar
     93  #define putchar(_c) \
     94    do { \
     95       char _buffer[2]; \
     96       _buffer[0] = _c; \
     97       _buffer[1] = '\0'; \
     98       _test_output_append( _buffer ); \
     99    } while (0)
     100
     101  /* we write to stderr when there is a pause() */
     102  #define FLUSH_OUTPUT() _test_output_flush()
     103
     104  #if defined(TEST_INIT) || defined(CONFIGURE_INIT)
     105
     106    char _test_output_buffer[_TEST_OUTPUT_BUFFER_SIZE];
     107    int _test_output_buffer_index = 0;
     108
     109    void _test_output_append(char *_buffer)
     110    {
     111      char *p;
     112
     113      for ( p=_buffer ; *p ; p++ ) {
     114        _test_output_buffer[_test_output_buffer_index++] = *p;
     115        _test_output_buffer[_test_output_buffer_index]   = '\0';
     116        #if 0
     117          if ( *p == '\n' ) {
     118            fprintf( stderr, "BUFFER -- %s", _test_output_buffer );
     119            _test_output_buffer_index = 0;
     120           _test_output_buffer[0]   = '\0';
     121          }
     122        #endif
     123        if ( _test_output_buffer_index >= (_TEST_OUTPUT_BUFFER_SIZE - 80) )
     124          _test_output_flush();
     125      }
     126    }
     127
     128    #include <termios.h>
     129    #include <unistd.h>
     130
     131    void _test_output_flush(void)
     132    {
     133      fprintf( stderr, "%s", _test_output_buffer );
     134      _test_output_buffer_index = 0;
     135      tcdrain( 2 );
     136    }
     137
     138    #endif
     139/*
     140 *  USE IPRINT
     141 */
     142#else
     143
     144  #include <stdio.h>
     145  #include <stdlib.h>
     146
     147  /* do not use iprintf if strict ansi mode */
     148  #if defined(_NEWLIB_VERSION) && !defined(__STRICT_ANSI__)
     149    #undef printf
     150    #define printf(...) \
     151      do { \
     152         fiprintf( stderr, __VA_ARGS__ ); \
     153      } while (0)
     154  #else
     155    #undef printf
     156    #define printf(...) \
     157      do { \
     158         fprintf( stderr, __VA_ARGS__ ); \
     159      } while (0)
     160  #endif
     161
     162  #undef puts
     163  #define puts(_s) \
     164      do { \
     165         printf( "%s\n", _s ); \
     166      } while (0)
     167
     168  #undef putchar
     169  #define putchar(_c) \
     170    do { \
     171       printf( "%c", _c ); \
     172    } while (0)
     173
     174  #define rtems_test_exit(_s) \
     175    do { \
     176      exit(_s); \
     177    } while (0)
     178
     179  #define FLUSH_OUTPUT() \
     180    do { \
     181      fflush(stdout); \
     182    } while (0)
     183
    32184#endif
    33 
    34 #define rtems_test_exit(_s) \
    35   do { \
    36     exit(_s); \
    37   } while (0)
    38 
    39 #define FLUSH_OUTPUT() \
    40   do { \
    41     fflush(stdout); \
    42   } while (0)
    43 
    44 #else  /* buffer test output */
    45 
    46 #define _TEST_OUTPUT_BUFFER_SIZE 2048
    47 extern char _test_output_buffer[_TEST_OUTPUT_BUFFER_SIZE];
    48 void _test_output_append(char *);
    49 void _test_output_flush(void);
    50 
    51 #define rtems_test_exit(_s) \
    52   do { \
    53     _test_output_flush(); \
    54     exit(_s); \
    55   } while (0)
    56 
    57 #undef printf
    58 #define printf(...) \
    59   do { \
    60      char _buffer[128]; \
    61      sprintf( _buffer, __VA_ARGS__); \
    62      _test_output_append( _buffer ); \
    63   } while (0)
    64 
    65 #undef puts
    66 #define puts(_string) \
    67   do { \
    68      char _buffer[128]; \
    69      sprintf( _buffer, "%s\n", _string ); \
    70      _test_output_append( _buffer ); \
    71   } while (0)
    72 
    73 #undef putchar
    74 #define putchar(_c) \
    75   do { \
    76      char _buffer[2]; \
    77      _buffer[0] = _c; \
    78      _buffer[1] = '\0'; \
    79      _test_output_append( _buffer ); \
    80   } while (0)
    81 
    82 /* we write to stderr when there is a pause() */
    83 #define FLUSH_OUTPUT() _test_output_flush()
    84 
    85 #if defined(TEST_INIT) || defined(CONFIGURE_INIT)
    86 
    87 char _test_output_buffer[_TEST_OUTPUT_BUFFER_SIZE];
    88 int _test_output_buffer_index = 0;
    89 
    90 void _test_output_append(char *_buffer)
    91 {
    92   char *p;
    93 
    94   for ( p=_buffer ; *p ; p++ ) {
    95     _test_output_buffer[_test_output_buffer_index++] = *p;
    96     _test_output_buffer[_test_output_buffer_index]   = '\0';
    97 #if 0
    98     if ( *p == '\n' ) {
    99       fprintf( stderr, "BUFFER -- %s", _test_output_buffer );
    100       _test_output_buffer_index = 0;
    101      _test_output_buffer[0]   = '\0';
    102     }
    103 #endif
    104     if ( _test_output_buffer_index >= (_TEST_OUTPUT_BUFFER_SIZE - 80) )
    105       _test_output_flush();
    106   }
    107 }
    108 
    109 #include <termios.h>
    110 #include <unistd.h>
    111 
    112 void _test_output_flush(void)
    113 {
    114   fprintf( stderr, "%s", _test_output_buffer );
    115   _test_output_buffer_index = 0;
    116   tcdrain( 2 );
    117 }
    118 
    119 #endif  /* TEST_INIT */
    120 #endif /* TESTS_BUFFER_OUTPUT */
    121185
    122186#ifdef __cplusplus
Note: See TracChangeset for help on using the changeset viewer.