diff options
Diffstat (limited to 'cpukit')
-rw-r--r-- | cpukit/libcsupport/src/termios.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/cpukit/libcsupport/src/termios.c b/cpukit/libcsupport/src/termios.c index 1a7562e93c..a9603e1c24 100644 --- a/cpukit/libcsupport/src/termios.c +++ b/cpukit/libcsupport/src/termios.c @@ -1521,13 +1521,17 @@ fillBufferQueue (struct rtems_termios_tty *tty) /* * Wait for characters */ - if ( wait ) { - rtems_status_code sc; + if (wait) { + if (tty->ccount < CBUFSIZE - 1) { + rtems_status_code sc; - sc = rtems_semaphore_obtain( - tty->rawInBuf.Semaphore, tty->rawInBufSemaphoreOptions, timeout); - if (sc != RTEMS_SUCCESSFUL) + sc = rtems_semaphore_obtain( + tty->rawInBuf.Semaphore, tty->rawInBufSemaphoreOptions, timeout); + if (sc != RTEMS_SUCCESSFUL) + break; + } else { break; + } } } } |