diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2006-10-25 11:26:45 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2006-10-25 11:26:45 +0000 |
commit | fca53e8830d38c8f6e281a8690c5cbc60c80e786 (patch) | |
tree | 058466f633fb99c08f7471786122b2f4d9d0cab3 | |
parent | 8443a2452c786f90136cd04abd96b7e35c3da976 (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/ChangeLog | 10 | ||||
-rw-r--r-- | cpukit/libcsupport/src/termios.c | 2 |
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) |