summaryrefslogtreecommitdiffstats
path: root/cpukit
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2006-10-25 11:28:08 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2006-10-25 11:28:08 +0000
commit5112ff5a8826014962656398fb3b3043a968dc6c (patch)
tree6749cec44e77b7b163969684a37318084666c4c5 /cpukit
parent2006-10-25 Joel Sherrill <joel@OARcorp.com> (diff)
downloadrtems-5112ff5a8826014962656398fb3b3043a968dc6c.tar.bz2
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.
Diffstat (limited to 'cpukit')
-rw-r--r--cpukit/ChangeLog10
-rw-r--r--cpukit/libcsupport/src/termios.c2
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)