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.
This commit is contained in:
Joel Sherrill
2006-10-25 11:27:28 +00:00
parent b94e68dd04
commit b295019571
2 changed files with 11 additions and 1 deletions

View File

@@ -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-20 Ralf Corsépius <ralf.corsepius@rtems.org>
* score/cpu/Makefile.am, configure.ac: Remove nios2.

View File

@@ -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)