summaryrefslogtreecommitdiffstats
path: root/cpukit/libcsupport
diff options
context:
space:
mode:
authorThomas Doerfler <Thomas.Doerfler@embedded-brains.de>2009-11-30 13:23:58 +0000
committerThomas Doerfler <Thomas.Doerfler@embedded-brains.de>2009-11-30 13:23:58 +0000
commit42836e3f8589423c64f3a67aef1cb04cd86ebcba (patch)
treedafacefcb8d183e898dadcb23f167195769ad789 /cpukit/libcsupport
parentAdded defines for initialization of empty chains. (diff)
downloadrtems-42836e3f8589423c64f3a67aef1cb04cd86ebcba.tar.bz2
Obtain output semaphore before drain output during close to prevent an infinite output drain loop
Diffstat (limited to 'cpukit/libcsupport')
-rw-r--r--cpukit/libcsupport/src/termios.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/cpukit/libcsupport/src/termios.c b/cpukit/libcsupport/src/termios.c
index 373ba4dc53..51f3ac8cce 100644
--- a/cpukit/libcsupport/src/termios.c
+++ b/cpukit/libcsupport/src/termios.c
@@ -374,6 +374,10 @@ rtems_termios_close (void *arg)
/*
* default: just flush output buffer
*/
+ sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
+ if (sc != RTEMS_SUCCESSFUL) {
+ rtems_fatal_error_occurred (sc);
+ }
drainOutput (tty);
}