diff --git a/cpukit/ChangeLog b/cpukit/ChangeLog index d5d495e5f1..a3e9f238df 100644 --- a/cpukit/ChangeLog +++ b/cpukit/ChangeLog @@ -1,3 +1,13 @@ +2006-10-25 Jennifer Averett + + * 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-20 Ralf Corsépius * score/cpu/Makefile.am, configure.ac: Remove nios2. 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)