<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Generator" content="Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @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:0cm;
        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;}
span.EmailStyle17
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page Section1
        {size:612.0pt 792.0pt;
        margin:3.0cm 2.0cm 3.0cm 2.0cm;}
div.Section1
        {page:Section1;}
-->
</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]-->
</head>
<body lang="EN-GB" link="blue" vlink="purple">
<div class="Section1">
<p class="MsoNormal">Hi<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Does the server task behind these delays run at clock tick speed, or is the timing scaled down?
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I am working on a C++ wrap for timers, where rtems_timer_server_fire_after fits nicely.
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">There is also a task wrap, that uses rtems_task_wake_after to implement delays in the current task. That one has existed for some time, and I use it to test the new timer wrap.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Apparently rtems_task_wake_after is more accurate than rtems_timer_server_fire_after. - My test program uses the first to validate that the other has fired. I have to make very loose timing to get that test working.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I have inserted calls to rtems_clock_get_uptime in the code, so I can estimate the relative timing of the threads.
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The system tick is 1 mS, but if (as an extreme test) rtems_timer_server_fire_after is fed with a 1 tick delay, the callback routine is called after approx. 29 mS! rtems_task_wake_after nicely implements a 20 mS delay as a little more than
 19 mS.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Please give a hint, if I am using the timer server for something it was not designed for. We can’t directly use rtems_timer_fire_after, because some legacy code assumes to run in a task context. - 10 mS resolution should be sufficient.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Tests done on QEMU x86 with RTEMS 4.11. Setting the server priority to 1 (highest) does not change much.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="text-autospace:none">-- <o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none">Mogens Dybęk Christensen<o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none">Software Engineer<o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none">LDE5, Electronics & Software, Basic Software Platform<o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><a href="mailto:MogensD.Christensen@man.eu"><span lang="DA">MogensD.Christensen@man.eu</span></a><span lang="DA">, +45 3385 2362<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span lang="DA">MAN Diesel & Turbo SE, Copenhagen<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><a href="http://www.mandiesel.com"><span lang="DA">http://www.mandiesel.com</span></a><span lang="DA"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="DA"><o:p> </o:p></span></p>
</div>
</body>
</html>