<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    On 08/14/2012 04:15 PM, Kirspel, Kevin wrote:
    <blockquote
      cite="mid:201208142115.q7ELAowA024086@mx0b-00116901.pphosted.com"
      type="cite">
      <meta http-equiv="Content-Type" content="text/html;
        charset=windows-1252">
      <meta name="Generator" content="Microsoft Word 12 (filtered
        medium)">
      <style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:648171470;
        mso-list-type:hybrid;
        mso-list-template-ids:1833494488 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1
        {mso-list-id:2075808445;
        mso-list-type:hybrid;
        mso-list-template-ids:1833494488 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l1:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif][if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
      <div class="WordSection1">
        <p class="MsoNormal">I have a situation with semaphores that I
          thought someone may have a quick explanation for.  The
          scenario consists of 2 semaphore/mutexes and priority
          inheritance.  The first semaphore is created by the
          application (S1) and is of type: RTEMS_BINARY_SEMAPHORE |
          RTEMS_PRIORITY | RTEMS_INHERIT_PRIORITY.  The second (S2) is
          the allocator lock mutex that is used by malloc().  My
          scenario is as follows.<o:p></o:p></p>
      </div>
    </blockquote>
    <br>
    <blockquote
      cite="mid:201208142115.q7ELAowA024086@mx0b-00116901.pphosted.com"
      type="cite">
      <div class="WordSection1">
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Task 1 has priority 36.  Task 2 has
          priority 34.<o:p></o:p></p>
        <p class="MsoListParagraph"
          style="text-indent:-.25in;mso-list:l0 level1 lfo1"><!--[if !supportLists]--><span
            style="mso-list:Ignore">1.<span style="font:7.0pt
              "Times New Roman"">       </span></span><!--[endif]-->Task
          1 obtains S1.<o:p></o:p></p>
        <p class="MsoListParagraph"
          style="text-indent:-.25in;mso-list:l0 level1 lfo1"><!--[if !supportLists]--><span
            style="mso-list:Ignore">2.<span style="font:7.0pt
              "Times New Roman"">       </span></span><!--[endif]-->Task
          1 obtains S2<o:p></o:p></p>
        <p class="MsoListParagraph"
          style="text-indent:-.25in;mso-list:l0 level1 lfo1"><!--[if !supportLists]--><span
            style="mso-list:Ignore">3.<span style="font:7.0pt
              "Times New Roman"">       </span></span><!--[endif]-->Task
          2 preempts Task 1.<o:p></o:p></p>
        <p class="MsoListParagraph"
          style="text-indent:-.25in;mso-list:l0 level1 lfo1"><!--[if !supportLists]--><span
            style="mso-list:Ignore">4.<span style="font:7.0pt
              "Times New Roman"">       </span></span><!--[endif]-->Task
          2 tries to obtain S2 but can’t get it.  Task 1 priority is
          changed to 34.<o:p></o:p></p>
        <p class="MsoListParagraph"
          style="text-indent:-.25in;mso-list:l0 level1 lfo1"><!--[if !supportLists]--><span
            style="mso-list:Ignore">5.<span style="font:7.0pt
              "Times New Roman"">       </span></span><!--[endif]-->Task
          1 begins running again.  Task 1 releases S2.  Task 1 priority
          is not changed back to 36 and continues to run.<o:p></o:p></p>
        <p class="MsoListParagraph"
          style="text-indent:-.25in;mso-list:l0 level1 lfo1"><!--[if !supportLists]--><span
            style="mso-list:Ignore">6.<span style="font:7.0pt
              "Times New Roman"">       </span></span><!--[endif]-->Task
          1 continues operating for 3 more seconds.<o:p></o:p></p>
        <p class="MsoListParagraph"
          style="text-indent:-.25in;mso-list:l0 level1 lfo1"><!--[if !supportLists]--><span
            style="mso-list:Ignore">7.<span style="font:7.0pt
              "Times New Roman"">       </span></span><!--[endif]-->Task
          1 releases S1.  Task 1 priority is now changed back to 36.<o:p></o:p></p>
        <p class="MsoListParagraph"
          style="text-indent:-.25in;mso-list:l0 level1 lfo1"><!--[if !supportLists]--><span
            style="mso-list:Ignore">8.<span style="font:7.0pt
              "Times New Roman"">       </span></span><!--[endif]-->Task
          2 now preempts Task 1 and begins operating again.<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
      </div>
    </blockquote>
    What RTEMS version is this?<br>
    <br>
    This sounds like the priority inheritance release algorithm
    described here:<br>
    <br>
    <meta http-equiv="content-type" content="text/html;
      charset=windows-1252">
    <a
href="http://rtems.org/onlinedocs/doc-current/share/rtems/html/c_user/c_user_208.html#Semaphore-Manager-Priority-Inheritance">http://rtems.org/onlinedocs/doc-current/share/rtems/html/c_user/c_user_208.html#Semaphore-Manager-Priority-Inheritance</a><br>
    <br>
    Priority inherited is not lowered until ALL mutexes are released.<br>
    <br>
    There is an optional algorithm (don't recall if it is turned on by
    default) that<br>
    <meta http-equiv="content-type" content="text/html;
      charset=windows-1252">
    is guarded by the __RTEMS_STRICT_ORDER_MUTEX__ conditional.<br>
    configure with ENABLE_STRICT_ORDER_MUTEX=1 on the command line to<br>
    try this algorithm which should properly step down as each mutex is
    released.<br>
    <br>
    <blockquote
      cite="mid:201208142115.q7ELAowA024086@mx0b-00116901.pphosted.com"
      type="cite">
      <div class="WordSection1">
        <p class="MsoNormal">Task 1 is the main user of Semaphore S1. 
          During normal operation no other task will try to obtain it. 
          It is there to protect against some custom shell commands that
          may access the same data.  Semaphore S2 is widely used since
          it protects memory allocation.  If obtaining/releasing S1 is
          removed from the scenario above then everything works OK.<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoListParagraph"
          style="text-indent:-.25in;mso-list:l1 level1 lfo2"><!--[if !supportLists]--><span
            style="mso-list:Ignore">1.<span style="font:7.0pt
              "Times New Roman"">       </span></span><!--[endif]-->Task
          1 obtains S2<o:p></o:p></p>
        <p class="MsoListParagraph"
          style="text-indent:-.25in;mso-list:l1 level1 lfo2"><!--[if !supportLists]--><span
            style="mso-list:Ignore">2.<span style="font:7.0pt
              "Times New Roman"">       </span></span><!--[endif]-->Task
          2 preempts Task 1.<o:p></o:p></p>
        <p class="MsoListParagraph"
          style="text-indent:-.25in;mso-list:l1 level1 lfo2"><!--[if !supportLists]--><span
            style="mso-list:Ignore">3.<span style="font:7.0pt
              "Times New Roman"">       </span></span><!--[endif]-->Task
          2 tries to obtain S2 but can’t get it.  Task 1 priority is
          changed to 34.<o:p></o:p></p>
        <p class="MsoListParagraph"
          style="text-indent:-.25in;mso-list:l1 level1 lfo2"><!--[if !supportLists]--><span
            style="mso-list:Ignore">4.<span style="font:7.0pt
              "Times New Roman"">       </span></span><!--[endif]-->Task
          1 begins running again.  Task 1 releases S2.  Task 1 priority
          is now changed back to 36.<o:p></o:p></p>
        <p class="MsoListParagraph"
          style="text-indent:-.25in;mso-list:l1 level1 lfo2"><!--[if !supportLists]--><span
            style="mso-list:Ignore">5.<span style="font:7.0pt
              "Times New Roman"">       </span></span><!--[endif]-->Task
          2 now preempts Task 1 and begins operating again.<o:p></o:p></p>
        <p class="MsoListParagraph"
          style="text-indent:-.25in;mso-list:l1 level1 lfo2"><!--[if !supportLists]--><span
            style="mso-list:Ignore">6.<span style="font:7.0pt
              "Times New Roman"">       </span></span><!--[endif]-->Task
          2 enters wait condition.<o:p></o:p></p>
        <p class="MsoListParagraph"
          style="text-indent:-.25in;mso-list:l1 level1 lfo2"><!--[if !supportLists]--><span
            style="mso-list:Ignore">7.<span style="font:7.0pt
              "Times New Roman"">       </span></span><!--[endif]-->Task
          1 continues operating for 3 more seconds and then enters wait
          condition.<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">I am going to try and duplicate this
          scenario using a small test program but I wanted to see if
          anyone had any ideas of what may be causing the issue.  I have
          a mixed RTEMS source base between versions 4.10 and 4.11.   I
          started with 4.10 and upgraded just enough to get USB support.
          <o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
      </div>
    </blockquote>
    Any chance you want to pitch in and help resolve some issues on the
    TCP/IP side? <br>
    We are now up to the IPV4 loopback test and would LOVE to have help.
    :)<br>
    <blockquote
      cite="mid:201208142115.q7ELAowA024086@mx0b-00116901.pphosted.com"
      type="cite">
      <div class="WordSection1">
        <p class="MsoNormal">Kevin Kirspel<o:p></o:p></p>
        <p class="MsoNormal">Senior Research Engineer<o:p></o:p></p>
        <p class="MsoNormal">Opti Medical<o:p></o:p></p>
        <p class="MsoNormal">235 Hembree Park Drive<o:p></o:p></p>
        <p class="MsoNormal">Roswell GA 30076<o:p></o:p></p>
        <p class="MsoNormal">Tel: (770)-510-4444 ext. 81642<o:p></o:p></p>
        <p class="MsoNormal">Direct: (770)-688-1642<o:p></o:p></p>
        <p class="MsoNormal">Fax: (770)-510-4445<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
      </div>
    </blockquote>
    <br>
    <br>
    <pre class="moz-signature" cols="72">-- 
Joel Sherrill, Ph.D.             Director of Research&  Development
<a class="moz-txt-link-abbreviated" href="mailto:joel.sherrill@OARcorp.com">joel.sherrill@OARcorp.com</a>        On-Line Applications Research
Ask me about RTEMS: a free RTOS  Huntsville AL 35805
    Support Available             (256) 722-9985

</pre>
  </body>
</html>