<div dir="ltr"><br>Sorry, I sent the last message to only Joel.<br><div><br><div class="gmail_quote">---------- Forwarded message ----------<br>From: <b class="gmail_sendername">Chirayu Desai</b> <span dir="ltr"><<a href="mailto:chirayudesai1@gmail.com">chirayudesai1@gmail.com</a>></span><br>
Date: 25 November 2013 15:30<br>Subject: Re: Help with debugging a POSIX timing test.<br>To: Joel Sherrill <<a href="mailto:joel.sherrill@oarcorp.com">joel.sherrill@oarcorp.com</a>><br><br><br><div dir="ltr"><br><div class="gmail_extra">
<br><br><div class="gmail_quote"><div class="im">On 25 November 2013 00:35, Joel Sherrill <span dir="ltr"><<a href="mailto:joel.sherrill@oarcorp.com" target="_blank">joel.sherrill@oarcorp.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Now that I can see and run the code, a few things<br>
jump out.<br>
<br>
+ POSIX priorities -- lower numerically ==> more important<br>
+ You did &Thread_Id to calls after created. The & isn't<br>
supposed to be there. </blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
+ &policy should be the second argument to<br>
pthread_getschedparam.<br></blockquote></div><div>This explains the ESRCH I was getting. </div><div class="im"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">


+ Pay attention to compiler warnings. :)<br></blockquote></div><div>Sorry for not doing so. </div><div class="im"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">


+ Benchmark time is initialized IMMEDIATELY BEFORE the<br>
single operation under test. We try to avoid including<br>
anything.<br></blockquote></div><div>Got it. </div><div class="im"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<br>
I have attached a new version of init.c with comments<br>
hacked in and changes.<br></blockquote></div><div>Thanks. </div><div class="im"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">


<br>
The big thing I tried to put in a comment block is that<br>
the way this test is structured, it includes the hidden<br>
start up time for the first time test_thread(0 runs.<br>
I tried to write up notes on how to modify the test<br>
to avoid that.<br></blockquote></div><div>I was unable to understand all of it.</div><div>From what I understood, POSIX_Init is called first, which</div><div>cals benchmark_pthread_setschedparam.</div><div>That creates a new thread, gets the priority and policy, and then setschedparam is called</div>

<div>with the new (lowered) priority, which is what we want to test.</div><div class="im"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">


<br>
For convenience, I would add a helper routine like<br>
this:<br>
<br>
void set_thread_priority( id, new_priority )<br>
<br>
and call it. It will greatly simplify the code.<br></blockquote></div><div>Noted, I will do that after I get a better understanding of the code. </div><div class="im"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">


<br>
I hope I didn't fall into the inverse<br>
priority range trap in those instructions....<br>
<br>
WARNING: POSIX priorities run INVERSE from the internal<br>
priorities but in gdb if you print:<br>
<br>
p _Per_CPU_Information.per_cpu.executing->current_priority<br>
<br>
You will see the internal priority (NOT POSIX priority)<br>
of the currently running thread. 1 is most important<br>
and 255 is the IDLE task.<br></blockquote></div><div>I'm confused.<br>Per <a href="http://www.rtems.org/onlinedocs/doxygen/cpukit/html/group__POSIX__PRIORITY.html#gada0c9a015d42fd545af7454f1ca0d098" target="_blank">http://www.rtems.org/onlinedocs/doxygen/cpukit/html/group__POSIX__PRIORITY.html#gada0c9a015d42fd545af7454f1ca0d098</a>,<br>

<span style="font-size:12px;background-color:rgb(251,252,253);font-family:'Lucida Grande',Verdana,Geneva,Arial,sans-serif">"RTEMS Core has priorities run in the opposite sense of the POSIX API."</span><br>

</div><div><span style="font-size:12px;background-color:rgb(251,252,253);font-family:'Lucida Grande',Verdana,Geneva,Arial,sans-serif">So, for this task, lowering the POSIX priority is what we want, it is the output I'm getting which confuses me<br>

<br><div>Original priority: 2</div><div>Lowered priority: 4</div></span></div><div class="im"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">


<br>
So the numbers you pick are important to switch back and<br>
forth between the tasks.<br>
<br>
I think the test is pretty close in spite of all that I<br>
wrong. I stepped through the code attached and it is<br>
doing the right thing EXCEPT including the thread hidden<br>
start time. :)<br>
<br>
Benchmark programs are hard to get right but fun to write.<br></blockquote></div><div>Indeed </div><div><div class="h5"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">


<span><font color="#888888"><br>
--joel<br>
</font></span><div><div><br>
On 11/24/2013 11:50 AM, Joel Sherrill wrote:<br>
> Sorry to be lazy/stupid but how to I download just<br>
> the diff to see what's going on? I am not that<br>
> github literate.<br>
><br>
> --joel<br>
><br>
> On 11/24/2013 11:28 AM, Chirayu Desai wrote:<br>
>> Hello everyone.<br>
>><br>
>> I am Chirayu Desai, a high school student, currently participating in<br>
>> Google Code-In 2013<br>
>><br>
>> I have currently working on the task [0], but I'm having some trouble<br>
>> trying to get my code[1] to work.<br>
>><br>
>> The task is to create a POSIX timing test psxtmthread05.<br>
>> The test case is: pthread_setschedparam() - lower own priority.<br>
>> I managed to write up something [2], but it doesn't work.<br>
>> The GDB output is:<br>
>><br>
>> (gdb) r<br>
>> Starting program:<br>
>> /home/cdesai/rtems/b-sis/sparc-rtems4.11/c/sis/testsuites/psxtmtests/psxtmthread05/psxtmthread05.exe<br>
>><br>
>><br>
>> *** POSIX TIME TEST PSXTMTHREAD05 ***<br>
>> getschedparam: 3<br>
>> Original priority: 5<br>
>> Lowered priority: 4<br>
>> setschedparam: 3<br>
>> pthread_setschedparam - lower own priority 2226<br>
>> *** END OF POSIX TIME TEST PSXTMTHREAD05 ***<br>
>> [Inferior 1 (process 42000) exited normally]<br>
>><br>
>> [0]:<br>
>> <a href="http://www.google-melange.com/gci/task/view/google/gci2013/6383096106582016" target="_blank">http://www.google-melange.com/gci/task/view/google/gci2013/6383096106582016</a><br>
>> [1]: <a href="https://github.com/chirayudesai/rtems/tree/psxtmthread05" target="_blank">https://github.com/chirayudesai/rtems/tree/psxtmthread05</a><br>
>> [2]: <a href="https://github.com/chirayudesai/rtems/commit/890cebf084ca2a3815e3049a766276ddcdb0188a" target="_blank">https://github.com/chirayudesai/rtems/commit/890cebf084ca2a3815e3049a766276ddcdb0188a</a><br>
>><br>
>> P.S. This is my first post to this list, so excuse me for any mistakes.<br>
>><br>
>> Regards,<br>
>> Chirayu Desai<br>
><br>
><br>
><br>
<br>
<br>
<br>
--<br>
Joel Sherrill, Ph.D.             Director of Research & Development<br>
joel.sherrill@OARcorp.com        On-Line Applications Research<br>
Ask me about RTEMS: a free RTOS  Huntsville AL 35805<br>
Support Available                (256) 722-9985<br>
</div></div></blockquote></div></div></div><br></div></div>
</div><br></div></div>