diff options
-rw-r--r-- | cpukit/ChangeLog | 10 | ||||
-rw-r--r-- | cpukit/libcsupport/src/termios.c | 2 |
2 files changed, 11 insertions, 1 deletions
diff --git a/cpukit/ChangeLog b/cpukit/ChangeLog index d4edb25f9e..efce3d7e8f 100644 --- a/cpukit/ChangeLog +++ b/cpukit/ChangeLog @@ -1,3 +1,13 @@ +2006-10-25 Jennifer Averett <jennifer@oarcorp.com> + + * libcsupport/src/termios.c: Change attribute of semaphore. It was + counting interrupts not acting as a condition synchronization mutex. + Since the caller did not always need to obtain the semaphore, it was + not being decremented until there was no data. This could occur after + hours of running a system and thousands of interrupts. The code in + fillBufferQueue would spin until it had consumed all of those + semaphore counts. + 2006-10-23 Joel Sherrill <joel@OARcorp.com> * configure.ac, score/cpu/Makefile.am: Add bfin. diff --git a/cpukit/libcsupport/src/termios.c b/cpukit/libcsupport/src/termios.c index 1917c68735..40c8ba75a6 100644 --- a/cpukit/libcsupport/src/termios.c +++ b/cpukit/libcsupport/src/termios.c @@ -259,7 +259,7 @@ rtems_termios_open ( sc = rtems_semaphore_create ( rtems_build_name ('T', 'R', 'r', c), 0, - RTEMS_COUNTING_SEMAPHORE | RTEMS_PRIORITY, + RTEMS_SIMPLE_BINARY_SEMAPHORE | RTEMS_PRIORITY, RTEMS_NO_PRIORITY, &tty->rawInBuf.Semaphore); if (sc != RTEMS_SUCCESSFUL) |