[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