<div dir="ltr">Hi,<div><br></div><div>Sorry for my late reply, I missed this email in my inbox for some reason.</div><div><br></div><div>Thank you for your quick reply.</div><div><br></div><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">every REST thread having a unique priority.</blockquote><div>a unique priority which is the same for all the OPERATION_COUNT REST threads, right? </div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Rest(pri=2) <br>   - rtems_task_exit<br>.... more Rest threads<br>Rest(pri=lowest based on operation count)<br>    there is an if which checks that operation_count says to stop)<br>    end timer</blockquote><div>Please explain this. How do we get a REST task with priority=2? Do all the REST tasks not have a priority of (RTEMS_MAXIMUM_PRIORITY / 2u) + 1u, = approx 512/2 + 1 = 257? I know that what you are saying is correct because when I debug the code while one of the REST thread is executing, I can see that there are two threads with priority 2 in the blocked state. </div></div><div><br></div><div><br class="gmail-Apple-interchange-newline"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">As I write this, I find it strange that you have issues with this test and not one of the sptests which should be setting up the same situation.</blockquote><div>Yes, the following tasks fail: I tried debugging sp02 sp16 but they were complex and hard to debug. tm24 seemed like the easiest to solve :p.</div></div><div><br></div><div> sp02.exe<br> sp16.exe<br> sp30.exe<br> sp31.exe<br> sp37.exe<br> sp42.exe<br> spfatal29.exe<br> tm24.exe<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Jan 14, 2021 at 7:10 PM Joel Sherrill <<a href="mailto:joel@rtems.org">joel@rtems.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Jan 14, 2021 at 12:30 AM Richi Dubey <<a href="mailto:richidubey@gmail.com" target="_blank">richidubey@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hi,<br><div><br></div><div>In the <a href="https://git.rtems.org/rtems/tree/testsuites/tmtests/tm24/task1.c#n106" target="_blank">Tasks function</a>, when one of the OPERATION_COUNT thread calls <span style="color:rgb(0,0,0);font-size:13.3333px">rtems_task_wake_after(</span>RTEMS_YIELD_PROCESSOR<span style="color:rgb(0,0,0);font-size:13.3333px">), it yields the processor and <a href="https://docs.rtems.org/releases/rtemsdocs-4.6.2/share/rtems/html/c_user/c_user00077.html" target="_blank">goes</a> in the ready state. So, is it expected that the same thread gets the execution again after the call to </span><span style="color:rgb(0,0,0);font-size:13.3333px">rtems_task_wake_after(</span>RTEMS_YIELD_PROCESSOR<span style="color:rgb(0,0,0);font-size:13.3333px">)? - because it is one of the threads with the highest priority and is in the ready queue - like call <a href="https://git.rtems.org/rtems/tree/testsuites/tmtests/tm24/task1.c#n90" target="_blank">to</a> rtems_task_wake_after in the High_task function?</span></div></div></blockquote><div><br></div><div>I think you have missed this piece of code in the test:<br><br>status = rtems_task_create(<br>      rtems_build_name( 'R', 'E', 'S', 'T' ),<br>      (RTEMS_MAXIMUM_PRIORITY / 2u) + 1u,<br><br></div><div> Init and High_Task have priority 1 and all the REST have lower priorities with every REST thread having a unique priority.</div><div><br></div><div>The test should execute </div><div><br></div><div>Init </div><div>High </div><div>  - benchmark yield which returns to the same thread</div><div>  - start time</div><div>  - rtems_task_exit</div><div>Rest(pri=2) </div><div>   - rtems_task_exit</div><div>.... more Rest threads</div><div>Rest(pri=lowest based on operation count)</div><div>    there is an if which checks that operation_count says to stop)</div><div>    end timer</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><span style="color:rgb(0,0,0);font-size:13.3333px"><br></span></div><div><span style="color:rgb(0,0,0);font-size:13.3333px">If yes, the thread finishes its execution after the call to rtems_task_wake_after and the function also ends, does RTEMS try to find the next heir to execute?</span></div></div></blockquote><div><br></div><div>rtems_task_wake_after(yield) in High should return. There are no other threads at priority 1 and the REST should have no impact. They are all lower priority.</div><div><br></div><div>The other yield cases are when the caller is not preemptible and that is keeping higher priority threads from running. And when there are multiple threads at the same priority.</div><div><br></div><div>Both of those are more complicated than this where there is nothing else at this priority.</div><div><br></div><div>As I write this, I find it strange that you have issues with this test and not one of the sptests which should be setting up the same situation.</div><div><br></div><div>--joel</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><span style="color:rgb(0,0,0);font-size:13.3333px">     </span><span style="color:rgb(0,0,0);font-size:13.3333px">   </span><br></div></div>
_______________________________________________<br>
devel mailing list<br>
<a href="mailto:devel@rtems.org" target="_blank">devel@rtems.org</a><br>
<a href="http://lists.rtems.org/mailman/listinfo/devel" rel="noreferrer" target="_blank">http://lists.rtems.org/mailman/listinfo/devel</a></blockquote></div></div>
</blockquote></div>