[PATCH v3 5/5] Updated termios testsuites to use dedicated input and output baud rates in termios structure

Kevin Kirspel kevin-kirspel at idexx.com
Tue Mar 21 19:39:52 UTC 2017


---
 testsuites/libtests/termios/init.c                 | 341 +++++++++++++--------
 testsuites/libtests/termios01/init.c               | 143 +++++++--
 testsuites/libtests/termios01/termios01.scn        | 270 ++++++++++++----
 testsuites/libtests/termios01/termios_testdriver.c |   6 +-
 testsuites/libtests/termios02/termios02.scn        |   4 +-
 testsuites/libtests/termios03/termios03.scn        |   6 +-
 testsuites/libtests/termios04/termios04.scn        |   8 +-
 testsuites/libtests/termios05/termios05.scn        |   8 +-
 testsuites/libtests/termios06/init.c               |   2 +-
 testsuites/libtests/termios06/termios06.scn        |  20 +-
 testsuites/libtests/termios07/termios07.scn        |  21 +-
 testsuites/libtests/termios08/termios08.scn        |  19 +-
 12 files changed, 592 insertions(+), 256 deletions(-)

diff --git a/testsuites/libtests/termios/init.c b/testsuites/libtests/termios/init.c
index fcb586b..d8ac60a 100644
--- a/testsuites/libtests/termios/init.c
+++ b/testsuites/libtests/termios/init.c
@@ -46,6 +46,7 @@ void print_c_oflag(struct termios * tp);
 void print_c_lflag(struct termios * tp);
 void print_c_cflag(struct termios * tp);
 void print_c_cc(struct termios * tp);
+void print_baud(const char* name, speed_t spd);
 void print_termios(struct termios *tp);
 unsigned long get_baud_rate(void);
 unsigned long get_parity(void);
@@ -118,6 +119,9 @@ void print_c_oflag( struct termios * tp )
   if( tp->c_oflag & ONLCR )
     printf( "ONLCR " );
 
+  if( tp->c_oflag & ONOEOT )
+    printf( "ONOEOT " );
+
   if( tp->c_oflag & OCRNL )
     printf( "OCRNL " );
 
@@ -215,27 +219,38 @@ void print_c_oflag( struct termios * tp )
 void print_c_lflag( struct termios * tp )
 {
   char * c_lflag_bits [] = {
-    "ISIG",        /* 0000001 */
-    "ICANON",      /* 0000002 */
-    "XCASE",       /* 0000004 */
-    "ECHO",        /* 0000010 */
-    "ECHOE",       /* 0000020 */
-    "ECHOK",       /* 0000040 */
-    "ECHONL",      /* 0000100 */
-    "NOFLSH",      /* 0000200 */
-    "TOSTOP",      /* 0000400 */
-    "ECHOCTL",     /* 0001000 */
-    "ECHOPRT",     /* 0002000 */
-    "ECHOKE",      /* 0004000 */
-    "FLUSHO",      /* 0010000 */
-    "unknown",     /* 0020000 */
-    "PENDIN",      /* 0040000 */
-    "IEXTEN",      /* 0100000 */
-    "unknown",     /* 0200000 */
-    "unknown",     /* 0400000 */
-    "unknown",     /* 1000000 */
-    "unknown",     /* 2000000 */
-    "unknown",     /* 4000000 */
+    "ECHOKE",      /* 0x00000001 */
+    "ECHOE",       /* 0x00000002 */
+    "ECHOK",       /* 0x00000004 */
+    "ECHO",        /* 0x00000008 */
+    "ECHONL",      /* 0x00000010 */
+    "ECHOPRT",     /* 0x00000020 */
+    "ECHOCTL",     /* 0x00000040 */
+    "ISIG",        /* 0x00000080 */
+    "ICANON",      /* 0x00000100 */
+    "ALTWERASE",   /* 0x00000200 */
+    "IEXTEN",      /* 0x00000400 */
+    "EXTPROC",     /* 0x00000800 */
+    "XCASE",       /* 0x00001000 */
+    "unknown",     /* 0x00002000 */
+    "unknown",     /* 0x00004000 */
+    "unknown",     /* 0x00008000 */
+    "unknown",     /* 0x00010000 */
+    "unknown",     /* 0x00020000 */
+    "unknown",     /* 0x00040000 */
+    "unknown",     /* 0x00080000 */
+    "unknown",     /* 0x00100000 */
+    "unknown",     /* 0x00200000 */
+    "TOSTOP",      /* 0x00400000 */
+    "FLUSHO",      /* 0x00800000 */
+    "unknown",     /* 0x01000000 */
+    "NOKERNINFO",  /* 0x02000000 */
+    "unknown",     /* 0x04000000 */
+    "unknown",     /* 0x08000000 */
+    "unknown",     /* 0x10000000 */
+    "PENDIN",      /* 0x20000000 */
+    "unknown",     /* 0x40000000 */
+    "NOFLSH",      /* 0x80000000 */
   };
 
   printf( "c_lflag = 0x%08x\n\t", tp->c_lflag );
@@ -246,98 +261,8 @@ void print_c_lflag( struct termios * tp )
 
 void print_c_cflag( struct termios * tp )
 {
-  unsigned int baud;
-
   printf( "c_cflag = 0x%08x\n", tp->c_cflag );
 
-  baud = (tp->c_cflag & CBAUD) ;
-  if ( tp->c_cflag & CBAUDEX )
-  switch( baud ) {
-    case B0:
-      printf( "\tCBAUD =\tB0\n" );
-      break;
-
-    case B50:
-      printf( "\tCBAUD =\tB50\n" );
-      break;
-
-    case B75:
-      printf( "\tCBAUD =\tB75\n" );
-      break;
-
-    case B110:
-      printf( "\tCBAUD =\tB110\n" );
-      break;
-
-    case B134:
-      printf( "\tCBAUD =\tB134\n" );
-      break;
-
-    case B150:
-      printf( "\tCBAUD =\tB150\n" );
-      break;
-
-    case B200:
-      printf( "\tCBAUD =\tB200\n" );
-      break;
-
-    case B300:
-      printf( "\tCBAUD =\tB300\n" );
-      break;
-
-    case B600:
-      printf( "\tCBAUD =\tB600\n" );
-      break;
-
-    case B1200:
-      printf( "\tCBAUD =\tB1200\n" );
-      break;
-
-    case B1800:
-      printf( "\tCBAUD =\tB1800\n" );
-      break;
-
-    case B2400:
-      printf( "\tCBAUD =\tB2400\n" );
-      break;
-
-    case B4800:
-      printf( "\tCBAUD =\tB4800\n" );
-      break;
-
-    case B9600:
-      printf( "\tCBAUD =\tB9600\n" );
-      break;
-
-    case B19200:
-      printf( "\tCBAUD =\tB19200\n" );
-      break;
-
-    case B38400:
-      printf( "\tCBAUD =\tB38400\n" );
-      break;
-
-    case B57600:
-      printf( "\tCBAUD =\tB57600\n" );
-      break;
-
-    case B115200:
-      printf( "\tCBAUD =\tB115200\n" );
-      break;
-
-    case B230400:
-      printf( "\tCBAUD =\tB230400\n" );
-      break;
-
-    case B460800:
-      printf( "\tCBAUD =\tB460800\n" );
-      break;
-
-    default:
-      printf( "\tCBAUD =\tunknown (0x%08x)\n", baud );
-      break;
-    }
-
   switch( tp->c_cflag & CSIZE ) {
     case CS5:
       printf( "\tCSIZE =\tCS5\n" );
@@ -356,6 +281,11 @@ void print_c_cflag( struct termios * tp )
       break;
   }
 
+  if( tp->c_cflag & CIGNORE )
+    printf( "\tCIGNORE set: iqnore c_cflags enabled\n" );
+  else
+    printf( "\tCIGNORE clear: iqnore c_cflags disabled\n" );
+
   if( tp->c_cflag & CSTOPB )
     printf( "\tCSTOPB set: send 2 stop bits\n" );
   else
@@ -386,17 +316,35 @@ void print_c_cflag( struct termios * tp )
   else
     printf( "\tCLOCAL clear: don't ignore modem lines\n" );
 
-#if defined(CBAUDEX)
-  if( tp->c_cflag & CBAUDEX )
-    printf( "\tCBAUDEX set: What does this do?\n" );
+  if( tp->c_cflag & CCTS_OFLOW )
+    printf( "\tCCTS_OFLOW: hardware CTS output flow control enabled\n" );
   else
-    printf( "\tCBAUDEX clear: What does this do?\n" );
-#endif
+    printf( "\tCCTS_OFLOW: hardware CTS output flow control disabled\n" );
+
+  if( tp->c_cflag & CRTS_IFLOW )
+    printf( "\tCRTS_IFLOW: hardware RTS input flow control enabled\n" );
+  else
+    printf( "\tCRTS_IFLOW: hardware RTS input flow control disabled\n" );
 
   if( tp->c_cflag & CRTSCTS )
     printf( "\tCRTSCTS: harware flow control enabled?\n" );
   else
     printf( "\tCRTSCTS: hardware flow control disabled?\n" );
+
+  if( tp->c_cflag & CDSR_OFLOW )
+    printf( "\tCDSR_OFLOW: hardware DSR output flow control enabled\n" );
+  else
+    printf( "\tCDSR_OFLOW: hardware DSR output flow control disabled\n" );
+
+  if( tp->c_cflag & CDTR_IFLOW )
+    printf( "\tCDTR_IFLOW: hardware DTR input flow control enabled\n" );
+  else
+    printf( "\tCDTR_IFLOW: hardware DTR input flow control disabled\n" );
+
+  if( tp->c_cflag & CCAR_OFLOW )
+    printf( "\tCCAR_OFLOW: hardware CD output flow control enabled\n" );
+  else
+    printf( "\tCCAR_OFLOW: hardware CD output flow control disabled\n" );
 }
 
 
@@ -404,25 +352,26 @@ void print_c_cc( struct termios * tp )
 {
   size_t i;
   char * cc_index_names [ /* NCCS */ ] = {
-    "[VINTR]   ",   /* 0 */
-    "[VQUIT]   ",   /* 1 */
-    "[VERASE]  ",   /* 2 */
-    "[VKILL]   ",   /* 3 */
-    "[VEOF]    ",   /* 4 */
-    "[VTIME]   ",   /* 5 */
-    "[VMIN]    ",   /* 6 */
-    "[VSWTC    ",   /* 7 */
-    "[VSTART]  ",   /* 8 */
-    "[VSTOP]   ",   /* 9 */
+    "[VEOF]    ",   /* 0 */
+    "[VEOL]    ",   /* 1 */
+    "[VEOL2]   ",   /* 2 */
+    "[VERASE]  ",   /* 3 */
+    "[VWERASE] ",   /* 4 */
+    "[VKILL]   ",   /* 5 */
+    "[VREPRINT]",   /* 6 */
+    "[VERASE2] ",   /* 7 */
+    "[VINTR]   ",   /* 8 */
+    "[VQUIT]   ",   /* 9 */
     "[VSUSP]   ",   /* 10 */
-    "[VEOL]    ",   /* 11 */
-    "[VREPRINT]",   /* 12 */
-    "[VDISCARD]",   /* 13 */
-    "[VWERASE] ",   /* 14 */
-    "[VLNEXT   ",   /* 15 */
-    "[VEOL2]   ",   /* 16 */
-    "unknown   ",   /* 17 */
-    "unknown   ",   /* 18 */
+    "[VDSUSP]  ",   /* 11 */
+    "[VSTART]  ",   /* 12 */
+    "[VSTOP]   ",   /* 13 */
+    "[VLNEXT]  ",   /* 14 */
+    "[VDISCARD]",   /* 15 */
+    "[VMIN]    ",   /* 16 */
+    "[VTIME]   ",   /* 17 */
+    "[VSTATUS] ",   /* 18 */
+    "unknown   ",   /* 19 */
   };
 
   for( i = 0; i < sizeof(cc_index_names)/sizeof(char*) ; i++ ) {
@@ -431,6 +380,116 @@ void print_c_cc( struct termios * tp )
 }
 
 
+void print_baud( const char* name, speed_t spd )
+{
+  switch( spd ) {
+  case B0:
+    printf( "%s = B0\n", name );
+    break;
+
+  case B50:
+    printf( "%s = B50\n", name );
+    break;
+
+  case B75:
+    printf( "%s = B75\n", name );
+    break;
+
+  case B110:
+    printf( "%s = B110\n", name );
+    break;
+
+  case B134:
+    printf( "%s = B134\n", name );
+    break;
+
+  case B150:
+    printf( "%s = B150\n", name );
+    break;
+
+  case B200:
+    printf( "%s = B200\n", name );
+    break;
+
+  case B300:
+    printf( "%s = B300\n", name );
+    break;
+
+  case B600:
+    printf( "%s = B600\n", name );
+    break;
+
+  case B1200:
+    printf( "%s = B1200\n", name );
+    break;
+
+  case B1800:
+    printf( "%s = B1800\n", name );
+    break;
+
+  case B2400:
+    printf( "%s = B2400\n", name );
+    break;
+
+  case B4800:
+    printf( "%s = B4800\n", name );
+    break;
+
+  case B9600:
+    printf( "%s = B9600\n", name );
+    break;
+
+  case B19200:
+    printf( "%s = B19200\n", name );
+    break;
+
+  case B38400:
+    printf( "%s = B38400\n", name );
+    break;
+
+  case B7200:
+    printf( "%s = B7200\n", name );
+    break;
+
+  case B14400:
+    printf( "%s = B14400\n", name );
+    break;
+
+  case B28800:
+    printf( "%s = B28800\n", name );
+    break;
+
+  case B57600:
+    printf( "%s = B57600\n", name );
+    break;
+
+  case B76800:
+    printf( "%s = B76800\n", name );
+    break;
+
+  case B115200:
+    printf( "%s = B115200\n", name );
+    break;
+
+  case B230400:
+    printf( "%s = B230400\n", name );
+    break;
+
+  case B460800:
+    printf( "%s = B460800\n", name );
+    break;
+
+  case B921600:
+    printf( "%s = B921600\n", name );
+    break;
+
+  default:
+    printf( "%s = unknown (0x%08x)\n", name, (unsigned int)spd );
+    break;
+  }
+}
+
+
 void print_termios( struct termios *tp )
 {
   printf( "\nLooking at the current termios settings:\n\n" );
@@ -439,6 +498,8 @@ void print_termios( struct termios *tp )
   print_c_cflag( tp );
   print_c_lflag( tp );
   print_c_cc( tp );
+  print_baud( "c_ispeed", tp->c_ispeed );
+  print_baud( "c_ospeed", tp->c_ospeed );
   printf( "\n" );
 }
 
@@ -450,7 +511,8 @@ unsigned long get_baud_rate(void)
   while( 1 ) {
     printf( "Enter the numerical value for the new baud rate.\n" );
     printf( "Choices are: 50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800\n" );
-    printf( "2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800\n" );
+    printf( "2400, 4800, 9600, 19200, 38400, 7200, 14400, 28800, 57600, 76800\n" );
+    printf( "115200, 230400, 460800, 921600\n" );
     printf( "\nYour choice: " );
     scanf( "%lu", &baud_rate );
     printf( "\n" );
@@ -470,10 +532,15 @@ unsigned long get_baud_rate(void)
       case 9600:   return B9600;
       case 19200:  return B19200;
       case 38400:  return B38400;
+      case 7200:   return B7200;
+      case 14400:  return B14400;
+      case 28800:  return B28800;
       case 57600:  return B57600;
+      case 76800:  return B76800;
       case 115200: return B115200;
       case 230400: return B230400;
       case 460800: return B460800;
+      case 921600: return B921600;
 
       default:
         printf( "%lu is not a valid choice. Try again.\n\n", baud_rate );
@@ -589,7 +656,9 @@ void change_line_settings( struct termios *tp )
 
   sleep( sleep_time );
 
-  tp->c_cflag = CLOCAL | CREAD | parity | stop_bits | data_bits | baud_rate;
+  tp->c_cflag = CLOCAL | CREAD | parity | stop_bits | data_bits;
+  tp->c_ispeed = baud_rate;
+  tp->c_ospeed = baud_rate;
   if( tcsetattr( fileno( stdin ), TCSADRAIN, tp ) < 0 ) {
     perror( "change_line_settings(): tcsetattr() failed" );
     rtems_test_exit( 1 );
diff --git a/testsuites/libtests/termios01/init.c b/testsuites/libtests/termios01/init.c
index 64c3bb2..562b252 100644
--- a/testsuites/libtests/termios01/init.c
+++ b/testsuites/libtests/termios01/init.c
@@ -12,6 +12,7 @@
 #endif
 
 #include "tmacros.h"
+#define TTYDEFCHARS
 #include <termios.h>
 #include <rtems/libcsupport.h>
 #include <rtems/malloc.h>
@@ -66,10 +67,15 @@ static const termios_baud_test_r baud_table[] = {
   { B9600,     9600 },
   { B19200,   19200 },
   { B38400,   38400 },
+  { B7200,     7200 },
+  { B14400,   14400 },
+  { B28800,   28800 },
   { B57600,   57600 },
+  { B76800,   76800 },
   { B115200, 115200 },
   { B230400, 230400 },
   { B460800, 460800 },
+  { B921600, 921600 },
   { INVALID_CONSTANT, INVALID_BAUD }
 };
 
@@ -233,16 +239,14 @@ static void test_termios_set_baud(
 
   puts( "Test termios setting device baud rate..." );
   for (i=0 ; baud_table[i].constant != INVALID_CONSTANT ; i++ ) {
-    tcflag_t cbaud = CBAUD;
-
     sc = tcgetattr( test, &attr );
     if ( sc != 0 ) {
       printf( "ERROR - return %d\n", sc );
       rtems_test_exit(0);
     }
 
-    attr.c_cflag &= ~cbaud;
-    attr.c_cflag |= baud_table[i].constant;
+    attr.c_ispeed = baud_table[i].constant;
+    attr.c_ospeed = baud_table[i].constant;
 
     printf(
       "tcsetattr(TCSANOW, B%" PRIdrtems_termios_baud_t ") - OK\n",
@@ -258,7 +262,17 @@ static void test_termios_set_baud(
       "tcsetattr(TCSADRAIN, B%" PRIdrtems_termios_baud_t ") - OK\n",
       baud_table[i].baud
     );
-    sc = tcsetattr( test, TCSANOW, &attr );
+    sc = tcsetattr( test, TCSADRAIN, &attr );
+    if ( sc != 0 ) {
+      printf( "ERROR - return %d\n", sc );
+      rtems_test_exit(0);
+    }
+
+    printf(
+      "tcsetattr(TCSAFLUSH, B%" PRIdrtems_termios_baud_t ") - OK\n",
+      baud_table[i].baud
+    );
+    sc = tcsetattr( test, TCSAFLUSH, &attr );
     if ( sc != 0 ) {
       printf( "ERROR - return %d\n", sc );
       rtems_test_exit(0);
@@ -301,7 +315,21 @@ static void test_termios_set_charsize(
     }
 
     printf( "tcsetattr(TCSADRAIN, CS%d) - OK\n", char_size_table[i].bits );
-    sc = tcsetattr( test, TCSANOW, &attr );
+    sc = tcsetattr( test, TCSADRAIN, &attr );
+    if ( sc != 0 ) {
+      printf( "ERROR - return %d\n", sc );
+      rtems_test_exit(0);
+    }
+
+    printf( "tcsetattr(TCSAFLUSH, CS%d) - OK\n", char_size_table[i].bits );
+    sc = tcsetattr( test, TCSAFLUSH, &attr );
+    if ( sc != 0 ) {
+      printf( "ERROR - return %d\n", sc );
+      rtems_test_exit(0);
+    }
+
+    printf( "tcsetattr(TCSASOFT, CS%d) - OK\n", char_size_table[i].bits );
+    sc = tcsetattr( test, TCSASOFT, &attr );
     if ( sc != 0 ) {
       printf( "ERROR - return %d\n", sc );
       rtems_test_exit(0);
@@ -344,7 +372,21 @@ static void test_termios_set_parity(
     }
 
     printf( "tcsetattr(TCSADRAIN, %s) - OK\n", parity_table[i].parity );
-    sc = tcsetattr( test, TCSANOW, &attr );
+    sc = tcsetattr( test, TCSADRAIN, &attr );
+    if ( sc != 0 ) {
+      printf( "ERROR - return %d\n", sc );
+      rtems_test_exit(0);
+    }
+
+    printf( "tcsetattr(TCSAFLUSH, %s) - OK\n", parity_table[i].parity );
+    sc = tcsetattr( test, TCSAFLUSH, &attr );
+    if ( sc != 0 ) {
+      printf( "ERROR - return %d\n", sc );
+      rtems_test_exit(0);
+    }
+
+    printf( "tcsetattr(TCSASOFT, %s) - OK\n", parity_table[i].parity );
+    sc = tcsetattr( test, TCSASOFT, &attr );
     if ( sc != 0 ) {
       printf( "ERROR - return %d\n", sc );
       rtems_test_exit(0);
@@ -390,7 +432,21 @@ static void test_termios_set_stop_bits(
     }
 
     printf( "tcsetattr(TCSADRAIN, %d bits) - OK\n", stop_bits_table[i].stop );
-    sc = tcsetattr( test, TCSANOW, &attr );
+    sc = tcsetattr( test, TCSADRAIN, &attr );
+    if ( sc != 0 ) {
+      printf( "ERROR - return %d\n", sc );
+      rtems_test_exit(0);
+    }
+
+    printf( "tcsetattr(TCSAFLUSH, %d bits) - OK\n", stop_bits_table[i].stop );
+    sc = tcsetattr( test, TCSAFLUSH, &attr );
+    if ( sc != 0 ) {
+      printf( "ERROR - return %d\n", sc );
+      rtems_test_exit(0);
+    }
+
+    printf( "tcsetattr(TCSASOFT, %d bits) - OK\n", stop_bits_table[i].stop );
+    sc = tcsetattr( test, TCSASOFT, &attr );
     if ( sc != 0 ) {
       printf( "ERROR - return %d\n", sc );
       rtems_test_exit(0);
@@ -404,9 +460,9 @@ static void test_termios_cfoutspeed(void)
   int sc;
   speed_t speed;
   struct termios term;
-  tcflag_t        bad;
+  speed_t bad;
 
-  bad = CBAUD << 1;
+  bad = B921600 << 1;
   memset( &term, '\0', sizeof(term) );
   puts( "cfsetospeed(BAD BAUD) - EINVAL" );
   sc = cfsetospeed( &term, bad );
@@ -436,9 +492,9 @@ static void test_termios_cfinspeed(void)
   int             sc;
   speed_t         speed;
   struct termios  term;
-  tcflag_t        bad;
+  speed_t         bad;
 
-  bad = CBAUD << 1;
+  bad = B921600 << 1;
   memset( &term, '\0', sizeof(term) );
   puts( "cfsetispeed(BAD BAUD) - EINVAL" );
   sc = cfsetispeed( &term, bad );
@@ -469,9 +525,9 @@ static void test_termios_cfsetspeed(void)
   int             status;
   speed_t         speed;
   struct termios  term;
-  tcflag_t        bad;
+  speed_t         bad;
 
-  bad = CBAUD << 1;
+  bad = B921600 << 1;
   memset( &term, '\0', sizeof(term) );
   puts( "cfsetspeed(BAD BAUD) - EINVAL" );
   status = cfsetspeed( &term, bad );
@@ -508,15 +564,45 @@ static void test_termios_cfmakeraw(void)
   puts( "cfmakeraw - OK" );
 
   /* Check that all of the flags were set correctly */
-  rtems_test_assert( ~(term.c_iflag & (IMAXBEL|IGNBRK|BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON)) );
+  rtems_test_assert( ~(term.c_iflag & (IMAXBEL|IXOFF|INPCK|BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON|IGNPAR)) );
+
+  rtems_test_assert( term.c_iflag & (IGNBRK) );
 
   rtems_test_assert( ~(term.c_oflag & OPOST) );
 
-  rtems_test_assert( ~(term.c_lflag & (ECHO|ECHONL|ICANON|ISIG|IEXTEN)) );
+  rtems_test_assert( ~(term.c_lflag & (ECHO|ECHOE|ECHOK|ECHONL|ICANON|ISIG|IEXTEN|NOFLSH|TOSTOP|PENDIN)) );
 
   rtems_test_assert( ~(term.c_cflag & (CSIZE|PARENB)) );
 
-  rtems_test_assert( term.c_cflag & CS8 );
+  rtems_test_assert( term.c_cflag & (CS8|CREAD) );
+
+  rtems_test_assert( term.c_cc[VMIN] == 1 );
+
+  rtems_test_assert( term.c_cc[VTIME] == 0 );
+}
+
+static void test_termios_cfmakesane(void)
+{
+  struct termios  term;
+
+  memset( &term, '\0', sizeof(term) );
+  cfmakesane( &term );
+  puts( "cfmakesane - OK" );
+
+  /* Check that all of the flags were set correctly */
+  rtems_test_assert( term.c_iflag == TTYDEF_IFLAG );
+
+  rtems_test_assert( term.c_oflag == TTYDEF_OFLAG );
+
+  rtems_test_assert( term.c_lflag == TTYDEF_LFLAG );
+
+  rtems_test_assert( term.c_cflag == TTYDEF_CFLAG );
+
+  rtems_test_assert( term.c_ispeed == TTYDEF_SPEED );
+
+  rtems_test_assert( term.c_ospeed == TTYDEF_SPEED );
+
+  rtems_test_assert( memcmp(&term.c_cc, ttydefchars, sizeof(term.c_cc)) == 0 );
 }
 
 typedef struct {
@@ -684,7 +770,7 @@ static void test_set_attributes_error(void)
 
   rtems_test_assert( !ctx.done );
   errno = 0;
-  rv = ioctl( fd, RTEMS_IO_SET_ATTRIBUTES, &term );
+  rv = ioctl( fd, TIOCSETA, &term );
   rtems_test_assert( rv == -1 );
   rtems_test_assert( errno == EIO );
   rtems_test_assert( ctx.done );
@@ -702,8 +788,8 @@ static void test_set_best_baud(void)
 {
   static const struct {
     uint32_t baud;
-    tcflag_t cflag;
-  } baud_to_cflag_table[] = {
+    speed_t speed;
+  } baud_to_speed_table[] = {
     { 0,          B0 },
     { 25,         B0 },
     { 26,         B50 },
@@ -731,19 +817,17 @@ static void test_set_best_baud(void)
     { 0xffffffff, B460800 }
   };
 
-  size_t n = RTEMS_ARRAY_SIZE(baud_to_cflag_table);
+  size_t n = RTEMS_ARRAY_SIZE(baud_to_speed_table);
   size_t i;
 
   for ( i = 0; i < n; ++i ) {
     struct termios term;
-    tcflag_t cbaud_mask = CBAUD;
 
     memset( &term, 0xff, sizeof( term ) );
-    rtems_termios_set_best_baud( &term, baud_to_cflag_table[ i ].baud );
+    rtems_termios_set_best_baud( &term, baud_to_speed_table[ i ].baud );
 
-    rtems_test_assert(
-      (term.c_cflag & cbaud_mask) == baud_to_cflag_table[ i ].cflag
-    );
+    rtems_test_assert( term.c_ispeed == baud_to_speed_table[ i ].speed );
+    rtems_test_assert( term.c_ospeed == baud_to_speed_table[ i ].speed );
   }
 }
 
@@ -791,13 +875,14 @@ static rtems_task Init(
   /*
    * tcsetattr - ERROR invalid operation
    */
-  puts( "tcsetattr - invalid operation - ENOTSUP" );
+  puts( "tcsetattr - invalid operation - EINVAL" );
   rc = tcsetattr( test, INT_MAX, &t );
   rtems_test_assert( rc == -1 );
-  rtems_test_assert( errno == ENOTSUP );
+  rtems_test_assert( errno == EINVAL );
 
   test_termios_cfmakeraw();
-  
+  test_termios_cfmakesane();
+
   /*
    * tcsetattr - TCSADRAIN
    */
diff --git a/testsuites/libtests/termios01/termios01.scn b/testsuites/libtests/termios01/termios01.scn
index c1c5470..36f1b8e 100644
--- a/testsuites/libtests/termios01/termios01.scn
+++ b/testsuites/libtests/termios01/termios01.scn
@@ -1,4 +1,4 @@
-*** TEST TERMIOS 01 ***
+*** BEGIN OF TEST TERMIOS 1 ***
 Test termios_baud2index...
 termios_baud_to_index(-2) - NOT OK
 termios_baud_to_index(B0) - OK
@@ -17,10 +17,15 @@ termios_baud_to_index(B4800) - OK
 termios_baud_to_index(B9600) - OK
 termios_baud_to_index(B19200) - OK
 termios_baud_to_index(B38400) - OK
+termios_baud_to_index(B7200) - OK
+termios_baud_to_index(B14400) - OK
+termios_baud_to_index(B28800) - OK
 termios_baud_to_index(B57600) - OK
+termios_baud_to_index(B76800) - OK
 termios_baud_to_index(B115200) - OK
 termios_baud_to_index(B230400) - OK
 termios_baud_to_index(B460800) - OK
+termios_baud_to_index(B921600) - OK
 
 Test termios_baud2number...
 termios_baud_to_number(-2) - NOT OK
@@ -40,10 +45,15 @@ termios_baud_to_number(B4800) - OK
 termios_baud_to_number(B9600) - OK
 termios_baud_to_number(B19200) - OK
 termios_baud_to_number(B38400) - OK
+termios_baud_to_number(B7200) - OK
+termios_baud_to_number(B14400) - OK
+termios_baud_to_number(B28800) - OK
 termios_baud_to_number(B57600) - OK
+termios_baud_to_number(B76800) - OK
 termios_baud_to_number(B115200) - OK
 termios_baud_to_number(B230400) - OK
 termios_baud_to_number(B460800) - OK
+termios_baud_to_number(B921600) - OK
 
 Test termios_number_to_baud...
 termios_number_to_baud(-2) - NOT OK
@@ -63,103 +73,179 @@ termios_number_to_baud(B4800) - OK
 termios_number_to_baud(B9600) - OK
 termios_number_to_baud(B19200) - OK
 termios_number_to_baud(B38400) - OK
+termios_number_to_baud(B7200) - OK
+termios_number_to_baud(B14400) - OK
+termios_number_to_baud(B28800) - OK
 termios_number_to_baud(B57600) - OK
+termios_number_to_baud(B76800) - OK
 termios_number_to_baud(B115200) - OK
 termios_number_to_baud(B230400) - OK
 termios_number_to_baud(B460800) - OK
+termios_number_to_baud(B921600) - OK
 
 Init - rtems_io_register_driver - Termios Test Driver - OK
 Termios_test_driver - rtems_io_register /dev/test - OK
-Init - Major slot returned = 2
+Init - Major slot returned = 3
 Init - open - /dev/test - OK
 Termios_test_driver - rtems_set_initial_baud - bad baud - OK
 Termios_test_driver - rtems_set_initial_baud - 38400 - OK
-tcsetattr - invalid operation - ENOTSUP
+tcsetattr - invalid operation - EINVAL
 cfmakeraw - OK
+cfmakesane - OK
 
 tcsetattr - drain - OK
-set_attributes - B0 5-NONE-1
+set_attributes - B0 8-NONE-2
 Test termios setting device baud rate...
 tcsetattr(TCSANOW, B0) - OK
-set_attributes - B0 5-NONE-1
+set_attributes - B0 8-NONE-2
 tcsetattr(TCSADRAIN, B0) - OK
-set_attributes - B0 5-NONE-1
+set_attributes - B0 8-NONE-2
+tcsetattr(TCSAFLUSH, B0) - OK
+set_attributes - B0 8-NONE-2
 tcsetattr(TCSANOW, B50) - OK
-set_attributes - B50 5-NONE-1
+set_attributes - B50 8-NONE-2
 tcsetattr(TCSADRAIN, B50) - OK
-set_attributes - B50 5-NONE-1
+set_attributes - B50 8-NONE-2
+tcsetattr(TCSAFLUSH, B50) - OK
+set_attributes - B50 8-NONE-2
 tcsetattr(TCSANOW, B75) - OK
-set_attributes - B75 5-NONE-1
+set_attributes - B75 8-NONE-2
 tcsetattr(TCSADRAIN, B75) - OK
-set_attributes - B75 5-NONE-1
+set_attributes - B75 8-NONE-2
+tcsetattr(TCSAFLUSH, B75) - OK
+set_attributes - B75 8-NONE-2
 tcsetattr(TCSANOW, B110) - OK
-set_attributes - B110 5-NONE-1
+set_attributes - B110 8-NONE-2
 tcsetattr(TCSADRAIN, B110) - OK
-set_attributes - B110 5-NONE-1
+set_attributes - B110 8-NONE-2
+tcsetattr(TCSAFLUSH, B110) - OK
+set_attributes - B110 8-NONE-2
 tcsetattr(TCSANOW, B134) - OK
-set_attributes - B134 5-NONE-1
+set_attributes - B134 8-NONE-2
 tcsetattr(TCSADRAIN, B134) - OK
-set_attributes - B134 5-NONE-1
+set_attributes - B134 8-NONE-2
+tcsetattr(TCSAFLUSH, B134) - OK
+set_attributes - B134 8-NONE-2
 tcsetattr(TCSANOW, B150) - OK
-set_attributes - B150 5-NONE-1
+set_attributes - B150 8-NONE-2
 tcsetattr(TCSADRAIN, B150) - OK
-set_attributes - B150 5-NONE-1
+set_attributes - B150 8-NONE-2
+tcsetattr(TCSAFLUSH, B150) - OK
+set_attributes - B150 8-NONE-2
 tcsetattr(TCSANOW, B200) - OK
-set_attributes - B200 5-NONE-1
+set_attributes - B200 8-NONE-2
 tcsetattr(TCSADRAIN, B200) - OK
-set_attributes - B200 5-NONE-1
+set_attributes - B200 8-NONE-2
+tcsetattr(TCSAFLUSH, B200) - OK
+set_attributes - B200 8-NONE-2
 tcsetattr(TCSANOW, B300) - OK
-set_attributes - B300 5-NONE-1
+set_attributes - B300 8-NONE-2
 tcsetattr(TCSADRAIN, B300) - OK
-set_attributes - B300 5-NONE-1
+set_attributes - B300 8-NONE-2
+tcsetattr(TCSAFLUSH, B300) - OK
+set_attributes - B300 8-NONE-2
 tcsetattr(TCSANOW, B600) - OK
-set_attributes - B600 5-NONE-1
+set_attributes - B600 8-NONE-2
 tcsetattr(TCSADRAIN, B600) - OK
-set_attributes - B600 5-NONE-1
+set_attributes - B600 8-NONE-2
+tcsetattr(TCSAFLUSH, B600) - OK
+set_attributes - B600 8-NONE-2
 tcsetattr(TCSANOW, B1200) - OK
-set_attributes - B1200 5-NONE-1
+set_attributes - B1200 8-NONE-2
 tcsetattr(TCSADRAIN, B1200) - OK
-set_attributes - B1200 5-NONE-1
+set_attributes - B1200 8-NONE-2
+tcsetattr(TCSAFLUSH, B1200) - OK
+set_attributes - B1200 8-NONE-2
 tcsetattr(TCSANOW, B1800) - OK
-set_attributes - B1800 5-NONE-1
+set_attributes - B1800 8-NONE-2
 tcsetattr(TCSADRAIN, B1800) - OK
-set_attributes - B1800 5-NONE-1
+set_attributes - B1800 8-NONE-2
+tcsetattr(TCSAFLUSH, B1800) - OK
+set_attributes - B1800 8-NONE-2
 tcsetattr(TCSANOW, B2400) - OK
-set_attributes - B2400 5-NONE-1
+set_attributes - B2400 8-NONE-2
 tcsetattr(TCSADRAIN, B2400) - OK
-set_attributes - B2400 5-NONE-1
+set_attributes - B2400 8-NONE-2
+tcsetattr(TCSAFLUSH, B2400) - OK
+set_attributes - B2400 8-NONE-2
 tcsetattr(TCSANOW, B4800) - OK
-set_attributes - B4800 5-NONE-1
+set_attributes - B4800 8-NONE-2
 tcsetattr(TCSADRAIN, B4800) - OK
-set_attributes - B4800 5-NONE-1
+set_attributes - B4800 8-NONE-2
+tcsetattr(TCSAFLUSH, B4800) - OK
+set_attributes - B4800 8-NONE-2
 tcsetattr(TCSANOW, B9600) - OK
-set_attributes - B9600 5-NONE-1
+set_attributes - B9600 8-NONE-2
 tcsetattr(TCSADRAIN, B9600) - OK
-set_attributes - B9600 5-NONE-1
+set_attributes - B9600 8-NONE-2
+tcsetattr(TCSAFLUSH, B9600) - OK
+set_attributes - B9600 8-NONE-2
 tcsetattr(TCSANOW, B19200) - OK
-set_attributes - B19200 5-NONE-1
+set_attributes - B19200 8-NONE-2
 tcsetattr(TCSADRAIN, B19200) - OK
-set_attributes - B19200 5-NONE-1
+set_attributes - B19200 8-NONE-2
+tcsetattr(TCSAFLUSH, B19200) - OK
+set_attributes - B19200 8-NONE-2
 tcsetattr(TCSANOW, B38400) - OK
-set_attributes - B38400 5-NONE-1
+set_attributes - B38400 8-NONE-2
 tcsetattr(TCSADRAIN, B38400) - OK
-set_attributes - B38400 5-NONE-1
+set_attributes - B38400 8-NONE-2
+tcsetattr(TCSAFLUSH, B38400) - OK
+set_attributes - B38400 8-NONE-2
+tcsetattr(TCSANOW, B7200) - OK
+set_attributes - B7200 8-NONE-2
+tcsetattr(TCSADRAIN, B7200) - OK
+set_attributes - B7200 8-NONE-2
+tcsetattr(TCSAFLUSH, B7200) - OK
+set_attributes - B7200 8-NONE-2
+tcsetattr(TCSANOW, B14400) - OK
+set_attributes - B14400 8-NONE-2
+tcsetattr(TCSADRAIN, B14400) - OK
+set_attributes - B14400 8-NONE-2
+tcsetattr(TCSAFLUSH, B14400) - OK
+set_attributes - B14400 8-NONE-2
+tcsetattr(TCSANOW, B28800) - OK
+set_attributes - B28800 8-NONE-2
+tcsetattr(TCSADRAIN, B28800) - OK
+set_attributes - B28800 8-NONE-2
+tcsetattr(TCSAFLUSH, B28800) - OK
+set_attributes - B28800 8-NONE-2
 tcsetattr(TCSANOW, B57600) - OK
-set_attributes - B57600 5-NONE-1
+set_attributes - B57600 8-NONE-2
 tcsetattr(TCSADRAIN, B57600) - OK
-set_attributes - B57600 5-NONE-1
+set_attributes - B57600 8-NONE-2
+tcsetattr(TCSAFLUSH, B57600) - OK
+set_attributes - B57600 8-NONE-2
+tcsetattr(TCSANOW, B76800) - OK
+set_attributes - B76800 8-NONE-2
+tcsetattr(TCSADRAIN, B76800) - OK
+set_attributes - B76800 8-NONE-2
+tcsetattr(TCSAFLUSH, B76800) - OK
+set_attributes - B76800 8-NONE-2
 tcsetattr(TCSANOW, B115200) - OK
-set_attributes - B115200 5-NONE-1
+set_attributes - B115200 8-NONE-2
 tcsetattr(TCSADRAIN, B115200) - OK
-set_attributes - B115200 5-NONE-1
+set_attributes - B115200 8-NONE-2
+tcsetattr(TCSAFLUSH, B115200) - OK
+set_attributes - B115200 8-NONE-2
 tcsetattr(TCSANOW, B230400) - OK
-set_attributes - B230400 5-NONE-1
+set_attributes - B230400 8-NONE-2
 tcsetattr(TCSADRAIN, B230400) - OK
-set_attributes - B230400 5-NONE-1
+set_attributes - B230400 8-NONE-2
+tcsetattr(TCSAFLUSH, B230400) - OK
+set_attributes - B230400 8-NONE-2
 tcsetattr(TCSANOW, B460800) - OK
-set_attributes - B460800 5-NONE-1
+set_attributes - B460800 8-NONE-2
 tcsetattr(TCSADRAIN, B460800) - OK
-set_attributes - B460800 5-NONE-1
+set_attributes - B460800 8-NONE-2
+tcsetattr(TCSAFLUSH, B460800) - OK
+set_attributes - B460800 8-NONE-2
+tcsetattr(TCSANOW, B921600) - OK
+set_attributes - B921600 8-NONE-2
+tcsetattr(TCSADRAIN, B921600) - OK
+set_attributes - B921600 8-NONE-2
+tcsetattr(TCSAFLUSH, B921600) - OK
+set_attributes - B921600 8-NONE-2
 Init - close - /dev/test - OK
 
 Init - open - /dev/test - OK
@@ -168,21 +254,37 @@ Termios_test_driver - rtems_set_initial_baud - 38400 - OK
 
 Test termios setting device character size ...
 tcsetattr(TCSANOW, CS5) - OK
-set_attributes - B38400 5-NONE-1
+set_attributes - B38400 5-NONE-2
 tcsetattr(TCSADRAIN, CS5) - OK
-set_attributes - B38400 5-NONE-1
+set_attributes - B38400 5-NONE-2
+tcsetattr(TCSAFLUSH, CS5) - OK
+set_attributes - B38400 5-NONE-2
+tcsetattr(TCSASOFT, CS5) - OK
+set_attributes - B38400 5-NONE-2
 tcsetattr(TCSANOW, CS6) - OK
-set_attributes - B38400 6-NONE-1
+set_attributes - B38400 6-NONE-2
 tcsetattr(TCSADRAIN, CS6) - OK
-set_attributes - B38400 6-NONE-1
+set_attributes - B38400 6-NONE-2
+tcsetattr(TCSAFLUSH, CS6) - OK
+set_attributes - B38400 6-NONE-2
+tcsetattr(TCSASOFT, CS6) - OK
+set_attributes - B38400 6-NONE-2
 tcsetattr(TCSANOW, CS7) - OK
-set_attributes - B38400 7-NONE-1
+set_attributes - B38400 7-NONE-2
 tcsetattr(TCSADRAIN, CS7) - OK
-set_attributes - B38400 7-NONE-1
+set_attributes - B38400 7-NONE-2
+tcsetattr(TCSAFLUSH, CS7) - OK
+set_attributes - B38400 7-NONE-2
+tcsetattr(TCSASOFT, CS7) - OK
+set_attributes - B38400 7-NONE-2
 tcsetattr(TCSANOW, CS8) - OK
-set_attributes - B38400 8-NONE-1
+set_attributes - B38400 8-NONE-2
 tcsetattr(TCSADRAIN, CS8) - OK
-set_attributes - B38400 8-NONE-1
+set_attributes - B38400 8-NONE-2
+tcsetattr(TCSAFLUSH, CS8) - OK
+set_attributes - B38400 8-NONE-2
+tcsetattr(TCSASOFT, CS8) - OK
+set_attributes - B38400 8-NONE-2
 Init - close - /dev/test - OK
 
 Init - open - /dev/test - OK
@@ -191,17 +293,29 @@ Termios_test_driver - rtems_set_initial_baud - 38400 - OK
 
 Test termios setting device parity ...
 tcsetattr(TCSANOW, none) - OK
-set_attributes - B38400 8-NONE-1
+set_attributes - B38400 8-NONE-2
 tcsetattr(TCSADRAIN, none) - OK
-set_attributes - B38400 8-NONE-1
+set_attributes - B38400 8-NONE-2
+tcsetattr(TCSAFLUSH, none) - OK
+set_attributes - B38400 8-NONE-2
+tcsetattr(TCSASOFT, none) - OK
+set_attributes - B38400 8-NONE-2
 tcsetattr(TCSANOW, even) - OK
-set_attributes - B38400 8-ODD-1
+set_attributes - B38400 8-ODD-2
 tcsetattr(TCSADRAIN, even) - OK
-set_attributes - B38400 8-ODD-1
+set_attributes - B38400 8-ODD-2
+tcsetattr(TCSAFLUSH, even) - OK
+set_attributes - B38400 8-ODD-2
+tcsetattr(TCSASOFT, even) - OK
+set_attributes - B38400 8-ODD-2
 tcsetattr(TCSANOW, odd) - OK
-set_attributes - B38400 8-EVEN-1
+set_attributes - B38400 8-EVEN-2
 tcsetattr(TCSADRAIN, odd) - OK
-set_attributes - B38400 8-EVEN-1
+set_attributes - B38400 8-EVEN-2
+tcsetattr(TCSAFLUSH, odd) - OK
+set_attributes - B38400 8-EVEN-2
+tcsetattr(TCSASOFT, odd) - OK
+set_attributes - B38400 8-EVEN-2
 Init - close - /dev/test - OK
 
 Init - open - /dev/test - OK
@@ -213,10 +327,18 @@ tcsetattr(TCSANOW, 1 bit) - OK
 set_attributes - B38400 8-NONE-1
 tcsetattr(TCSADRAIN, 1 bits) - OK
 set_attributes - B38400 8-NONE-1
+tcsetattr(TCSAFLUSH, 1 bits) - OK
+set_attributes - B38400 8-NONE-1
+tcsetattr(TCSASOFT, 1 bits) - OK
+set_attributes - B38400 8-NONE-1
 tcsetattr(TCSANOW, 2 bits) - OK
 set_attributes - B38400 8-NONE-2
 tcsetattr(TCSADRAIN, 2 bits) - OK
 set_attributes - B38400 8-NONE-2
+tcsetattr(TCSAFLUSH, 2 bits) - OK
+set_attributes - B38400 8-NONE-2
+tcsetattr(TCSASOFT, 2 bits) - OK
+set_attributes - B38400 8-NONE-2
 cfsetospeed(BAD BAUD) - EINVAL
 cfsetospeed(B0) - OK
 cfgetospeed(B0) - OK
@@ -250,14 +372,24 @@ cfsetospeed(B19200) - OK
 cfgetospeed(B19200) - OK
 cfsetospeed(B38400) - OK
 cfgetospeed(B38400) - OK
+cfsetospeed(B7200) - OK
+cfgetospeed(B7200) - OK
+cfsetospeed(B14400) - OK
+cfgetospeed(B14400) - OK
+cfsetospeed(B28800) - OK
+cfgetospeed(B28800) - OK
 cfsetospeed(B57600) - OK
 cfgetospeed(B57600) - OK
+cfsetospeed(B76800) - OK
+cfgetospeed(B76800) - OK
 cfsetospeed(B115200) - OK
 cfgetospeed(B115200) - OK
 cfsetospeed(B230400) - OK
 cfgetospeed(B230400) - OK
 cfsetospeed(B460800) - OK
 cfgetospeed(B460800) - OK
+cfsetospeed(B921600) - OK
+cfgetospeed(B921600) - OK
 cfsetispeed(BAD BAUD) - EINVAL
 cfsetispeed(B0) - OK
 cfgetispeed(B0) - OK
@@ -291,14 +423,24 @@ cfsetispeed(B19200) - OK
 cfgetispeed(B19200) - OK
 cfsetispeed(B38400) - OK
 cfgetispeed(B38400) - OK
+cfsetispeed(B7200) - OK
+cfgetispeed(B7200) - OK
+cfsetispeed(B14400) - OK
+cfgetispeed(B14400) - OK
+cfsetispeed(B28800) - OK
+cfgetispeed(B28800) - OK
 cfsetispeed(B57600) - OK
 cfgetispeed(B57600) - OK
+cfsetispeed(B76800) - OK
+cfgetispeed(B76800) - OK
 cfsetispeed(B115200) - OK
 cfgetispeed(B115200) - OK
 cfsetispeed(B230400) - OK
 cfgetispeed(B230400) - OK
 cfsetispeed(B460800) - OK
 cfgetispeed(B460800) - OK
+cfsetispeed(B921600) - OK
+cfgetispeed(B921600) - OK
 cfsetspeed(BAD BAUD) - EINVAL
 cfsetspeed(B0) - OK
 cfgetspeed(B0) - checking both inspeed and outspeed - OK
@@ -332,14 +474,24 @@ cfsetspeed(B19200) - OK
 cfgetspeed(B19200) - checking both inspeed and outspeed - OK
 cfsetspeed(B38400) - OK
 cfgetspeed(B38400) - checking both inspeed and outspeed - OK
+cfsetspeed(B7200) - OK
+cfgetspeed(B7200) - checking both inspeed and outspeed - OK
+cfsetspeed(B14400) - OK
+cfgetspeed(B14400) - checking both inspeed and outspeed - OK
+cfsetspeed(B28800) - OK
+cfgetspeed(B28800) - checking both inspeed and outspeed - OK
 cfsetspeed(B57600) - OK
 cfgetspeed(B57600) - checking both inspeed and outspeed - OK
+cfsetspeed(B76800) - OK
+cfgetspeed(B76800) - checking both inspeed and outspeed - OK
 cfsetspeed(B115200) - OK
 cfgetspeed(B115200) - checking both inspeed and outspeed - OK
 cfsetspeed(B230400) - OK
 cfgetspeed(B230400) - checking both inspeed and outspeed - OK
 cfsetspeed(B460800) - OK
 cfgetspeed(B460800) - checking both inspeed and outspeed - OK
+cfsetspeed(B921600) - OK
+cfgetspeed(B921600) - checking both inspeed and outspeed - OK
 Init - close - /dev/test - OK
 Multiple open of the device
 Termios_test_driver - rtems_set_initial_baud - bad baud - OK
@@ -395,4 +547,4 @@ Termios_test_driver - rtems_set_initial_baud - 38400 - OK
 Termios_test_driver - rtems_set_initial_baud - bad baud - OK
 Termios_test_driver - rtems_set_initial_baud - 38400 - OK
 
-*** END OF TEST TERMIOS 01 ***
+*** END OF TEST TERMIOS 1 ***
diff --git a/testsuites/libtests/termios01/termios_testdriver.c b/testsuites/libtests/termios01/termios_testdriver.c
index 43aeccd..bd5c7a1 100644
--- a/testsuites/libtests/termios01/termios_testdriver.c
+++ b/testsuites/libtests/termios01/termios_testdriver.c
@@ -85,7 +85,7 @@ int termios_test_driver_set_attributes(
   const char            *char_size = "5";
   const char            *stop = "NONE";
 
-  baud_requested = t->c_cflag & CBAUD;
+  baud_requested = t->c_ispeed;
 
   number = rtems_termios_baud_to_number( baud_requested );
 
@@ -164,7 +164,7 @@ rtems_device_driver termios_test_driver_open(
   int               rc;
   rtems_libio_open_close_args_t *args = arg;
   static bool firstCall = true;
-  
+
   static const rtems_termios_callbacks Callbacks = {
     NULL,                                    /* firstOpen */
     NULL,                                    /* lastClose */
@@ -192,7 +192,7 @@ rtems_device_driver termios_test_driver_open(
     size_t i;
 
     firstCall = false;
-    
+
     for (i = 0; i < sizeof( allocSizes ) / sizeof( allocSizes [0] ); ++i) {
       void *opaque = rtems_heap_greedy_allocate( allocSizes, i );
 
diff --git a/testsuites/libtests/termios02/termios02.scn b/testsuites/libtests/termios02/termios02.scn
index 9b38d69..be46893 100644
--- a/testsuites/libtests/termios02/termios02.scn
+++ b/testsuites/libtests/termios02/termios02.scn
@@ -1,4 +1,4 @@
-*** TERMIOS 02 TEST ***
+*** BEGIN OF TEST TERMIOS 2 ***
 tcdrain(12) - EBADF
 tcdrain(stdin) - OK
 tcdrain(stdout) - OK
@@ -24,4 +24,4 @@ ctermid( NULL ) - OK
 ctermid ==> /dev/console
 ctermid( term_name ) - OK
 ctermid ==> /dev/console
-*** END OF TERMIOS 02 TEST ***
+*** END OF TEST TERMIOS 2 ***
diff --git a/testsuites/libtests/termios03/termios03.scn b/testsuites/libtests/termios03/termios03.scn
index 17802fe..ed4a784 100644
--- a/testsuites/libtests/termios03/termios03.scn
+++ b/testsuites/libtests/termios03/termios03.scn
@@ -1,4 +1,4 @@
-*** TEST TERMIOS03 ***
+*** BEGIN OF TEST TERMIOS 3 ***
 open(/dev/test) - OK
 Writing: This is test output.
 Transmitted 22 characters
@@ -68,7 +68,7 @@ Echoed 55 characters
 54 65 73 74 69 6e 67 20 56 4b 49 4c 4c 08 20 08 |Testing VKILL. .|
 08 20 08 08 20 08 08 20 08 08 20 08 08 20 08 08 |. .. .. .. .. ..|
 20 08 08 20 08 08 20 08 08 20 08 08 20 08 08 20 | .. .. .. .. .. |
-08 08 20 08 2e 0d 0a
+08 08 20 08 2e 0d 0a                            |.. ....         |
 
 Reading (expected):
 7f 54 65 73 74 69 6e 67 20 56 45 52 41 53 45 20 |.Testing VERASE |
@@ -97,4 +97,4 @@ Echoed 140 characters
 20 08 08 08 08 08 08 08 08 08 0d 0a             | ...........    |
 
 close(/dev/test) - OK
-*** END OF TEST TERMIOS03 ***
+*** END OF TEST TERMIOS 3 ***
diff --git a/testsuites/libtests/termios04/termios04.scn b/testsuites/libtests/termios04/termios04.scn
index 99b8eb0..812369a 100644
--- a/testsuites/libtests/termios04/termios04.scn
+++ b/testsuites/libtests/termios04/termios04.scn
@@ -1,5 +1,5 @@
-*** TEST TERMIOS04 ***
-open(/dev/test) - OK 
+*** BEGIN OF TEST TERMIOS 4 ***
+open(/dev/test) - OK
 Writing: This is interrupt driven test output.
 Transmitted 39 characters
 54 68 69 73 20 69 73 20 69 6e 74 65 72 72 75 70 |This is interrup|
@@ -29,5 +29,5 @@ As Read 37 characters
 4e 6f 6e 2d 42 6c 6f 63 6b 69 6e 67 20 69 6e 74 |Non-Blocking int|
 65 72 72 75 70 74 20 64 72 69 76 65 6e 20 72 65 |errupt driven re|
 61 64 2e 0d 0a                                  |ad...           |
-close(/dev/test) - OK 
-*** END OF TEST TERMIOS04 ***
+close(/dev/test) - OK
+*** END OF TEST TERMIOS 4 ***
diff --git a/testsuites/libtests/termios05/termios05.scn b/testsuites/libtests/termios05/termios05.scn
index 4d2988f..e30a243 100644
--- a/testsuites/libtests/termios05/termios05.scn
+++ b/testsuites/libtests/termios05/termios05.scn
@@ -1,5 +1,5 @@
-*** TEST TERMIOS05 ***
-open(/dev/test) - OK 
+*** BEGIN OF TEST TERMIOS 5 ***
+open(/dev/test) - OK
 Writing: This is test output.
 Transmitted 20 characters
 54 68 69 73 20 69 73 20 74 65 73 74 20 6f 75 74 |This is test out|
@@ -55,5 +55,5 @@ Read 10 bytes from read(2)
 Echoed 12 characters
 0a 61 62 63 64 65 66 67 68 2e 0d 0a             |.abcdefgh...    |
 Changing c_iflag to: Disable to lower case mapping on input
-close(/dev/test) - OK 
-*** END OF TEST TERMIOS05 ***
+close(/dev/test) - OK
+*** END OF TEST TERMIOS 5 ***
diff --git a/testsuites/libtests/termios06/init.c b/testsuites/libtests/termios06/init.c
index 759b444..9b59ad2 100644
--- a/testsuites/libtests/termios06/init.c
+++ b/testsuites/libtests/termios06/init.c
@@ -198,7 +198,7 @@ rtems_task Init(
   ioctl_it();
   read_it();
   close_it();
-  
+
   TEST_END();
 
   rtems_test_exit(0);
diff --git a/testsuites/libtests/termios06/termios06.scn b/testsuites/libtests/termios06/termios06.scn
index b558077..1039597 100644
--- a/testsuites/libtests/termios06/termios06.scn
+++ b/testsuites/libtests/termios06/termios06.scn
@@ -1,7 +1,5 @@
-
-
-*** TEST TERMIOS06 ***
-open(/dev/test) - OK 
+*** BEGIN OF TEST TERMIOS 6 ***
+open(/dev/test) - OK
 ioctl - RTEMS_IO_SNDWAKEUP - OK
 ioctl - RTEMS_IO_RCVWAKEUP - OK
 ioctl - TIOCGETD - OK
@@ -10,14 +8,13 @@ pppopen called
 ioctl - TIOCSETD - OK
 pppclose called
 pppopen called
-write(PPPD TEST) - OK 
+write(PPPD TEST) - OK
 pppwrite called - 10 bytes
 50 50 50 44 20 54 45 53 54 00                   |PPPD TEST.      |
-
 pppstart called
-ioctl(/dev/test) - OK 
+ioctl(/dev/test) - OK
 pppioctl called
-tcgetattr(/dev/test) - OK 
+tcgetattr(/dev/test) - OK
 Turn on flow control on output - OK
 Turn off flow control on output - OK
 Turn on flow control on input - OK
@@ -25,9 +22,7 @@ Turn off flow control on input - OK
 
 Reading (expected):
 54 68 69 73 20 69 73 20 74 65 73 74 20 50 50 50 |This is test PPP|
-
 20 69 6e 70 75 74                               | input          |
-
 pppread called
 pppinput called - with (T)
 pppinput called - with (h)
@@ -53,8 +48,7 @@ pppinput called - with (u)
 pppinput called - with (t)
 pppinput called - with (.)
 Rx_Wake - invoked
-
 Read 0 bytes from read(2)
-close(/dev/test) - OK 
+Error: length must be greater than zero.close(/dev/test) - OK
 pppclose called
-*** END OF TEST TERMIOS06 ***
+*** END OF TEST TERMIOS 6 ***
diff --git a/testsuites/libtests/termios07/termios07.scn b/testsuites/libtests/termios07/termios07.scn
index a636120..e5630db 100644
--- a/testsuites/libtests/termios07/termios07.scn
+++ b/testsuites/libtests/termios07/termios07.scn
@@ -1 +1,20 @@
-XXX fill in with test output
+*** BEGIN OF TEST TERMIOS 7 ***
+rtems_termios_bufsize( 64, 64, 64 ) - OK
+open(/dev/test) - OK
+Changing c_iflag to: Set XON/XOFF
+Writing: 01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789Transmitted 200 characters
+30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 |0123456789012345|
+36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 |6789012345678901|
+32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 |2345678901234567|
+38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 |8901234567890123|
+34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 |4567890123456789|
+30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 |0123456789012345|
+36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 |6789012345678901|
+32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 |2345678901234567|
+38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 |8901234567890123|
+34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 |4567890123456789|
+30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 |0123456789012345|
+36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 |6789012345678901|
+32 33 34 35 36 37 38 39                         |23456789        |
+close(/dev/test) - OK
+*** END OF TEST TERMIOS 7 ***
diff --git a/testsuites/libtests/termios08/termios08.scn b/testsuites/libtests/termios08/termios08.scn
index a636120..469d537 100644
--- a/testsuites/libtests/termios08/termios08.scn
+++ b/testsuites/libtests/termios08/termios08.scn
@@ -1 +1,18 @@
-XXX fill in with test output
+*** BEGIN OF TEST TERMIOS 8 ***
+open(/dev/test) - OK
+Changing c_lflag to: non-canonical
+Changing to polling - VMIN=0 VTIME=0
+read - 0 expected
+Changing to half-second timeout - VMIN=0 VTIME=5
+read - 0 expected
+Changing to half-second timeout - VMIN=5 VTIME=3
+Enqueue 2 characters
+read - 2 expected
+Changing to half-second timeout - VMIN=5 VTIME=3
+Enqueue 1 character
+read - 1 expected
+Enqueue 7 characters
+read - 5 expected
+read - 2 expected
+close(/dev/test) - OK
+*** END OF TEST TERMIOS 8 ***
-- 
1.9.1



More information about the devel mailing list