summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2006-10-25 11:26:45 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2006-10-25 11:26:45 +0000
commitfca53e8830d38c8f6e281a8690c5cbc60c80e786 (patch)
tree058466f633fb99c08f7471786122b2f4d9d0cab3
parent8443a2452c786f90136cd04abd96b7e35c3da976 (diff)
2006-10-25 Jennifer Averett <jennifer@oarcorp.com>
* 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.
-rw-r--r--cpukit/libcsupport/ChangeLog10
-rw-r--r--cpukit/libcsupport/src/termios.c2
2 files changed, 11 insertions, 1 deletions
diff --git a/cpukit/libcsupport/ChangeLog b/cpukit/libcsupport/ChangeLog
index 04fb5b2d07..3174416c31 100644
--- a/cpukit/libcsupport/ChangeLog
+++ b/cpukit/libcsupport/ChangeLog
@@ -1,3 +1,13 @@
+2006-10-25 Jennifer Averett <jennifer@oarcorp.com>
+
+ * 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-06-22 Joel Sherrill <joel@OARcorp.com>
PR 1101/rtems
diff --git a/cpukit/libcsupport/src/termios.c b/cpukit/libcsupport/src/termios.c
index 58d6ccc666..524d26a886 100644
--- a/cpukit/libcsupport/src/termios.c
+++ b/cpukit/libcsupport/src/termios.c
@@ -292,7 +292,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)