From b295019571f1801d41c454546158302fdc38dbac Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Wed, 25 Oct 2006 11:27:28 +0000 Subject: [PATCH] 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. --- cpukit/ChangeLog | 10 ++++++++++ cpukit/libcsupport/src/termios.c | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) 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)