[Bug 1736] New: Termios transmit starvation
bugzilla-daemon at rtems.org
bugzilla-daemon at rtems.org
Tue Feb 8 11:39:57 UTC 2011
https://www.rtems.org/bugzilla/show_bug.cgi?id=1736
Summary: Termios transmit starvation
Product: RTEMS
Version: HEAD
Platform: All
OS/Version: RTEMS
Status: NEW
Severity: normal
Priority: P3
Component: cpukit
AssignedTo: joel.sherrill at oarcorp.com
ReportedBy: sebastian.huber at embedded-brains.de
A workaround for this problem is to disable the preemption around
rtems_termios_dequeue_characters().
Index: ./libcsupport/src/termios.c
===================================================================
RCS file: /usr1/CVS/rtems/cpukit/libcsupport/src/termios.c,v
retrieving revision 1.64
diff -u -r1.64 termios.c
--- ./libcsupport/src/termios.c 10 Aug 2010 22:15:32 -0000 1.64
+++ ./libcsupport/src/termios.c 8 Feb 2011 11:37:06 -0000
@@ -1311,6 +1311,15 @@
* wake up any pending writer task
*/
rtems_semaphore_release (tty->rawOutBuf.Semaphore);
+
+ /*
+ * FIXME: Here we have a race condition. In case this function is not
+ * invoked with preemption disabled (e.g. interrupt context) the release
+ * may interrupt us here and let the waiting task run. We may enter the
+ * rob_wait state again. Later in this function we loose this
+ * information, because we simply overwrite the state. This leads to
+ * transmit starvation.
+ */
}
if (newTail == tty->rawOutBuf.Head) {
--
Configure bugmail: https://www.rtems.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching all bug changes.
More information about the bugs
mailing list