<div dir="ltr"><div><div><div><div><div><div><div><div><div><div><div><div>Hi,<br><br></div>To validate spsem03 test case I created a new test case by modifying spsem02. Below is the description of the new test case:<br><br></div>Task: TA01 having priority 36, TA02 having priority 34, TA03 having priority 32.<br><br></div><div>Throughout the course following actions are performed:<br><br></div><div>TA01 acquires S0<br></div><div>TA02 acquires S1 and then S0<br></div><div>TA03 acquires S1<br></div><div><br></div>Timeline:<br><br></div>TA01  acquires S0 with priority 36.<br></div>TA01 spawns TA02 having priority 32.<br></div>TA02 takes over as it has higher priority than TA01.<br></div>TA02 acquires S1 with priority 34.<br></div>TA02 tries to acquire S0 but it is locked so promotes TA01 priority to 34.<br></div>TA01 gains control and now creates TA03 having 32.<br></div>TA03 takes over and tries to acquire S1. But it is acquired by TA02.<br></div>TA03 promotes TA02 priority to 32. But it observe that TA02 is also waiting on mutex held by TA01.<br></div><div><b>TA03 promotes TA01 priority to 32 as well. (Indirect reference case).<br></b></div><div>TA01 get control. It releases S0 and now its priority becomes 36 so TA02 takes over,<br></div><div>TA02 acquires S0. TA02 releases S0 and S1. And its priority now becomes 34(real priority)<br></div><div>TA03 takes over. It acquires S1. Releases S1 and suspends self.<br></div><div>Now TA02 gets control. It also suspends self.<br></div><div>Now TA01 gets control and exits the test.<br><br></div><div>Following is the output:<br>*** BEGIN OF TEST SPSEM 4 ***<br>init: S0 created<br>init: S1 created<br>init: TA01 created with priority 36<br>init: TA02 created with priority 34<br>init: TA03 created with priority 32<br>TA01: started with priority 36<br>TA01: priority 36, holding S0  (acquires S0)<br>TA02: started with priority 34  (creates TA02)<br>TA02: priority 34, holding S1   (acquires S1)<br>TA01: priority 34, holding S0 and now creating TA03<br>TA03: started with priority 32<br><b>TA01: priority 32 Releasing s0 (Priority of TA02 and TA01 got promoted to 32).</b><br>TA02: priority 32, holding S1,S0<br>TA02: priority 32 before releasing S0<br>TA02: priority 32 after releasing S0<br>TA02: priority 32 before releasing S1<br>TA03: priority 32, holding S1<br>TA03: priority 32<br>TA03: suspending<br>TA02: priority 34 after releasing S1<br>TA02: suspending<br>TA01: priority 36<br>TA01: exiting<br>*** END OF TEST SPSEM 4 ***<br>[Inferior 1 (process 42000) exited normally]<br><br><br></div><div>So this is sufficient to prove that spsem03 test passes as we just modelled it above. <br></div><div><br><br></div><div><div><div><div><div><div><div><div><div><div><div><br></div></div></div></div></div></div></div></div></div></div></div></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature"><div dir="ltr">Thanks,<div><br></div><div>Saurabh Gadia</div></div></div></div>
<br><div class="gmail_quote">On Thu, Aug 13, 2015 at 2:28 AM, Saurabh Gadia <span dir="ltr"><<a href="mailto:gadia@usc.edu" target="_blank">gadia@usc.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div>Hi,<br><br></div>I have implemented uniprocessor model of nested mutex problem in rtems. its still in basic form. I tried to multiplex it with the existing solution but was finding hard time. To push ahead, I decided to have separate functions for uniprocessor and SMP(kept default behavior) and with your review comments will know what to do. Following is the link for the git repo: <a href="https://github.com/saurabhgadia4/rtems/commits/master" target="_blank">https://github.com/saurabhgadia4/rtems/commits/master</a> and its JPF branch: <a href="https://github.com/saurabhgadia4/lock-model/blob/uniproc-new1/rtems/Mutex.java" target="_blank">https://github.com/saurabhgadia4/lock-model/blob/uniproc-new1/rtems/Mutex.java</a><br><br></div>I have also tested spsem01, 02, 03 test cases. Following are the links for the test case results which states output before solution and after applying the solution. I am still not getting whether my code is passing spsem03 test or not. How can I verify that?<br><br></div>Test Case Link: <a href="https://drive.google.com/folderview?id=0B44HRKVuGCkFfnFDVmxqQzZZUzljNUg4YmVPZmEybEp2Q0NNclpvS2FvemZ4Tm5Xa19nemM&usp=sharing" target="_blank">https://drive.google.com/folderview?id=0B44HRKVuGCkFfnFDVmxqQzZZUzljNUg4YmVPZmEybEp2Q0NNclpvS2FvemZ4Tm5Xa19nemM&usp=sharing</a><br><div><div><div><br clear="all"><div><div><div><div dir="ltr">Thanks,<div><br></div><div>Saurabh Gadia</div></div></div></div>
</div></div></div></div></div>
</blockquote></div><br></div>