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