<div dir="ltr">Hello Gedare,<div><br></div>Thanks, I will check the content of the patches again.<div><br></div><div>Best,</div><div>Kuan-Hsun</div><div class="gmail_extra"><br><div class="gmail_quote">2016-12-20 22:57 GMT+01:00 Gedare Bloom <span dir="ltr"><<a href="mailto:gedare@rtems.org" target="_blank">gedare@rtems.org</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Tue, Dec 20, 2016 at 4:53 PM, Kuan Hsun Chen <<a href="mailto:c0066c@gmail.com">c0066c@gmail.com</a>> wrote:<br>
> Hi Gedare,<br>
><br>
> I want to hold copyright. How should I do?<br>
><br>
</span>This depends on the policy of your employer/university. You should ask<br>
your supervisor/advisor about the issue, and look for relevant<br>
policies regarding copyright and/or open-source software.<br>
<br>
Then, you should just list yourself in the copyright line if you are<br>
allowed to hold the copyright, or you need to list your employer.<br>
<div class="HOEnZb"><div class="h5"><br>
> Best,<br>
> Kuan-Hsun<br>
><br>
> 2016-12-20 22:51 GMT+01:00 Gedare Bloom <<a href="mailto:gedare@rtems.org">gedare@rtems.org</a>>:<br>
>><br>
>> On Fri, Dec 9, 2016 at 11:40 AM, Kuan-Hsun Chen <<a href="mailto:c0066c@gmail.com">c0066c@gmail.com</a>> wrote:<br>
>> > ---<br>
>> >  testsuites/sptests/Makefile.am                 |   2 +<br>
>> >  testsuites/sptests/<a href="http://configure.ac" rel="noreferrer" target="_blank">configure.<wbr>ac</a>                |   1 +<br>
>> >  testsuites/sptests/<wbr>sprmsched01/Makefile.am     |  21 +++++<br>
>> >  testsuites/sptests/<wbr>sprmsched01/init.c          |  69 ++++++++++++++++<br>
>> >  testsuites/sptests/<wbr>sprmsched01/sprmsched01.doc |  33 ++++++++<br>
>> >  testsuites/sptests/<wbr>sprmsched01/sprmsched01.scn |  48 ++++++++++++<br>
>> >  testsuites/sptests/<wbr>sprmsched01/system.h        |  64 +++++++++++++++<br>
>> >  testsuites/sptests/<wbr>sprmsched01/tasks.c         | 104<br>
>> > +++++++++++++++++++++++++<br>
>> >  8 files changed, 342 insertions(+)<br>
>> >  create mode 100644 testsuites/sptests/<wbr>sprmsched01/Makefile.am<br>
>> >  create mode 100644 testsuites/sptests/<wbr>sprmsched01/init.c<br>
>> >  create mode 100644 testsuites/sptests/<wbr>sprmsched01/sprmsched01.doc<br>
>> >  create mode 100644 testsuites/sptests/<wbr>sprmsched01/sprmsched01.scn<br>
>> >  create mode 100644 testsuites/sptests/<wbr>sprmsched01/system.h<br>
>> >  create mode 100644 testsuites/sptests/<wbr>sprmsched01/tasks.c<br>
>> ><br>
>> > diff --git a/testsuites/sptests/Makefile.<wbr>am<br>
>> > b/testsuites/sptests/Makefile.<wbr>am<br>
>> > index 54a4de7..4281abb 100644<br>
>> > --- a/testsuites/sptests/Makefile.<wbr>am<br>
>> > +++ b/testsuites/sptests/Makefile.<wbr>am<br>
>> > @@ -37,6 +37,7 @@ _SUBDIRS += spfatal29<br>
>> >  _SUBDIRS += spmutex01<br>
>> >  _SUBDIRS += spextensions01<br>
>> >  _SUBDIRS += spsysinit01<br>
>> > +_SUBDIRS += sprmsched01<br>
>> >  if HAS_SMP<br>
>> >  else<br>
>> >  _SUBDIRS += sp29<br>
>> > @@ -56,6 +57,7 @@ _SUBDIRS += sptimecounter03<br>
>> >  _SUBDIRS += spatomic01<br>
>> >  _SUBDIRS += spintrcritical22<br>
>> >  _SUBDIRS += spsem03<br>
>> > +_SUBDIRS += spresource01<br>
>> >  _SUBDIRS += spmrsp01<br>
>> >  _SUBDIRS += spscheduler01<br>
>> >  _SUBDIRS += spprofiling01<br>
>> > diff --git a/testsuites/sptests/<a href="http://configure.ac" rel="noreferrer" target="_blank">configure<wbr>.ac</a><br>
>> > b/testsuites/sptests/<a href="http://configure.ac" rel="noreferrer" target="_blank">configure<wbr>.ac</a><br>
>> > index 76d60e3..8a55aef 100644<br>
>> > --- a/testsuites/sptests/<a href="http://configure.ac" rel="noreferrer" target="_blank">configure<wbr>.ac</a><br>
>> > +++ b/testsuites/sptests/<a href="http://configure.ac" rel="noreferrer" target="_blank">configure<wbr>.ac</a><br>
>> > @@ -255,5 +255,6 @@ sptimer_err02/Makefile<br>
>> >  spcpuset01/Makefile<br>
>> >  spregion_err01/Makefile<br>
>> >  sppartition_err01/Makefile<br>
>> > +sprmsched01/Makefile<br>
>> >  ])<br>
>> >  AC_OUTPUT<br>
>> > diff --git a/testsuites/sptests/<wbr>sprmsched01/Makefile.am<br>
>> > b/testsuites/sptests/<wbr>sprmsched01/Makefile.am<br>
>> > new file mode 100644<br>
>> > index 0000000..f837b52<br>
>> > --- /dev/null<br>
>> > +++ b/testsuites/sptests/<wbr>sprmsched01/Makefile.am<br>
>> > @@ -0,0 +1,21 @@<br>
>> > +<br>
>> > +rtems_tests_PROGRAMS = sprmsched01<br>
>> > +sprmsched01_SOURCES = init.c tasks.c system.h<br>
>> > +<br>
>> > +dist_rtems_tests_DATA = sprmsched01.scn<br>
>> > +dist_rtems_tests_DATA += sprmsched01.doc<br>
>> > +<br>
>> > +include $(RTEMS_ROOT)/make/custom/@<wbr>RTEMS_BSP@.cfg<br>
>> > +include $(top_srcdir)/../automake/<a href="http://compile.am" rel="noreferrer" target="_blank">comp<wbr>ile.am</a><br>
>> > +include $(top_srcdir)/../automake/<a href="http://leaf.am" rel="noreferrer" target="_blank">leaf<wbr>.am</a><br>
>> > +<br>
>> > +AM_CPPFLAGS += -I$(top_srcdir)/../support/<wbr>include<br>
>> > +<br>
>> > +LINK_OBJS = $(sprmsched01_OBJECTS)<br>
>> > +LINK_LIBS = $(sprmsched01_LDLIBS)<br>
>> > +<br>
>> > +sprmsched01$(EXEEXT): $(sprmsched01_OBJECTS)<br>
>> > $(sprmsched01_DEPENDENCIES)<br>
>> > +       @rm -f sprmsched01$(EXEEXT)<br>
>> > +       $(make-exe)<br>
>> > +<br>
>> > +include $(top_srcdir)/../automake/<a href="http://local.am" rel="noreferrer" target="_blank">loca<wbr>l.am</a><br>
>> > diff --git a/testsuites/sptests/<wbr>sprmsched01/init.c<br>
>> > b/testsuites/sptests/<wbr>sprmsched01/init.c<br>
>> > new file mode 100644<br>
>> > index 0000000..7fd3e87<br>
>> > --- /dev/null<br>
>> > +++ b/testsuites/sptests/<wbr>sprmsched01/init.c<br>
>> > @@ -0,0 +1,69 @@<br>
>> > +/**<br>
>> > + * @file sprmsched01/init.c<br>
>> > + *<br>
>> > + * @brief A init task body for sprmsched01 example.<br>
>> > + *<br>
>> > + */<br>
>> > +<br>
>> > +/*<br>
>> > + *  COPYRIGHT (c) 2016 Kuan-Hsun Chen, TU Dortmund University (TUDo).<br>
>> Please determine whether you hold copyright or your employer<br>
>><br>
>> > + *<br>
>> > + *  The license and distribution terms for this file may be<br>
>> > + *  found in the file LICENSE in this distribution or at<br>
>> > + *  <a href="http://www.rtems.com/license/LICENSE" rel="noreferrer" target="_blank">http://www.rtems.com/license/<wbr>LICENSE</a>.<br>
>> > + */<br>
>> > +<br>
>> > +#ifdef HAVE_CONFIG_H<br>
>> > +#include "config.h"<br>
>> > +#endif<br>
>> > +<br>
>> > +#define CONFIGURE_INIT<br>
>> > +#include "system.h"<br>
>> > +<br>
>> > +#include <rtems/rtems/tasksimpl.h><br>
>> > +#include <rtems/test.h><br>
>> > +#include <rtems/status-checks.h><br>
>> > +<br>
>> > +const char rtems_test_name[] = "Rate Monotonic 01";<br>
>> > +<br>
>> > +/* Global variables */<br>
>> > +rtems_id   Task_id[ 2 ];         /* array of task ids */<br>
>> > +rtems_name Task_name[ 2 ];       /* array of task names */<br>
>> > +uint32_t tick_per_second;        /* time reference */<br>
>> > +int testnumber = 11;                  /* stop condition */<br>
>> > +<br>
>> > +rtems_task_priority Prio[3] = {0, 2, 5};<br>
>> > +<br>
>> > +rtems_task Init(<br>
>> > +       rtems_task_argument argument<br>
>> > +)<br>
>> > +{<br>
>> > +  rtems_status_code status;<br>
>> > +  TEST_BEGIN();<br>
>> > +<br>
>> > +<br>
>> > +  tick_per_second = rtems_clock_get_ticks_per_<wbr>second();<br>
>> > +  printf("\nTicks per second in your system: %" PRIu32 "\n",<br>
>> > tick_per_second);<br>
>> > +<br>
>> > +  Task_name[ 1 ] = rtems_build_name( 'T', 'A', '1', ' ' );<br>
>> > +  Task_name[ 2 ] = rtems_build_name( 'T', 'A', '2', ' ' );<br>
>> > +<br>
>> > +  /* Create two tasks */<br>
>> > +  for ( int index = 1; index <= 2; index++){<br>
>> > +    status = rtems_task_create(<br>
>> > +      Task_name[ index ], Prio[index], RTEMS_MINIMUM_STACK_SIZE,<br>
>> > RTEMS_DEFAULT_MODES,<br>
>> > +      RTEMS_DEFAULT_ATTRIBUTES, &Task_id[ index ]<br>
>> > +    );<br>
>> > +    directive_failed( status, "rtems_task_create loop");<br>
>> > +  }<br>
>> > +<br>
>> > +<br>
>> > +  /* After creating the periods for tasks, start to run them<br>
>> > sequencially. */<br>
>> > +  for ( int index = 1; index <= 2; index++){<br>
>> > +    status = rtems_task_start( Task_id[ index ], Task_1, index);<br>
>> > +    directive_failed( status, "rtems_task_start loop");<br>
>> > +  }<br>
>> > +  status = rtems_task_delete( RTEMS_SELF );<br>
>> > +  directive_failed( status, "rtems_task_delete of RTEMS_SELF" );<br>
>> > +}<br>
>> > +<br>
>> > diff --git a/testsuites/sptests/<wbr>sprmsched01/sprmsched01.doc<br>
>> > b/testsuites/sptests/<wbr>sprmsched01/sprmsched01.doc<br>
>> > new file mode 100644<br>
>> > index 0000000..7153af8<br>
>> > --- /dev/null<br>
>> > +++ b/testsuites/sptests/<wbr>sprmsched01/sprmsched01.doc<br>
>> > @@ -0,0 +1,33 @@<br>
>> > +#<br>
>> > +#   COPYRIGHT (c) 2016 Kuan-Hsun Chen, TU Dortmund University (TUDo).<br>
>> > +#<br>
>> > +#   The license and distribution terms for this file may be<br>
>> > +#   found in the file LICENSE in this distribution or at<br>
>> > +#   <a href="http://www.rtems.com/license/LICENSE" rel="noreferrer" target="_blank">http://www.rtems.com/license/<wbr>LICENSE</a>.<br>
>> > +#<br>
>> > +<br>
>> > +This file describes the directives and concepts tested by this test<br>
>> > set.<br>
>> > +<br>
>> > +test set name: sprmsched01<br>
>> > +<br>
>> > +directives:<br>
>> > +<br>
>> > +  - rtems_rate_monotonic_report_<wbr>statistics()<br>
>> > +  - rtems_rate_monotonic_period()<br>
>> > +  - rtems_rate_monotonic_<wbr>Postponed_num()<br>
>> > +  - _Rate_monotonic_Timeout()<br>
>> > +  - _Rate_monotonic_Renew_<wbr>deadline()<br>
>> > +  - _Rate_monotonic_Release_<wbr>postponedjob()<br>
>> > +  - _Rate_monotonic_Block_while_<wbr>expired()<br>
>> > +<br>
>> > +<br>
>> > +concepts:<br>
>> > +<br>
>> > +  - Verify that watchdog deadline is renewed on time without shift via<br>
>> > +    _Rate_monotonic_Renew_<wbr>deadline().<br>
>> > +  - Verify that postponed jobs are released with a correct number via<br>
>> > +    _Rate_monotonic_Release_<wbr>postponedjob().<br>
>> > +  - Verify that rtems_rate_monotonic_report_<wbr>statistics() reports<br>
>> > correct number<br>
>> > +    of deadline misses.<br>
>> > +  - Verify that rtems_rate_monotonic_period() and<br>
>> > +    _Rate_monotonic_Block_while_<wbr>expired() are operational.<br>
>> > diff --git a/testsuites/sptests/<wbr>sprmsched01/sprmsched01.scn<br>
>> > b/testsuites/sptests/<wbr>sprmsched01/sprmsched01.scn<br>
>> > new file mode 100644<br>
>> > index 0000000..3d3d2d9<br>
>> > --- /dev/null<br>
>> > +++ b/testsuites/sptests/<wbr>sprmsched01/sprmsched01.scn<br>
>> > @@ -0,0 +1,48 @@<br>
>> > +<br>
>> > +<br>
>> > +*** BEGIN OF TEST Rate Monotonic 01 ***<br>
>> > +<br>
>> > +Ticks per second in your system: 1000<br>
>> > +Job 1 Task 1 starts at tick 13.<br>
>> > +                                        Job 1 Task 1 ends at tick 6021.<br>
>> > +Job 1 Task 2 starts at tick 6022.<br>
>> > +                                        Job 1 Task 2 ends at tick 7024.<br>
>> > +Job 2 Task 2 starts at tick 8022.<br>
>> > +                                        Job 2 Task 2 ends at tick 9023.<br>
>> > +Job 2 Task 1 starts at tick 10013.<br>
>> > +                                        Job 2 Task 1 ends at tick<br>
>> > 16021.<br>
>> > +Job 3 Task 2 starts at tick 16023.<br>
>> > +                                        Job 3 Task 2 ends at tick<br>
>> > 17024.<br>
>> > +Job 4 Task 2 starts at tick 17025.<br>
>> > +                                        Job 4 Task 2 ends at tick<br>
>> > 18026.<br>
>> > +Job 5 Task 2 starts at tick 18026.<br>
>> > +                                        Job 5 Task 2 ends at tick<br>
>> > 19027.<br>
>> > +Job 6 Task 2 starts at tick 19028.<br>
>> > +                                        Job 6 Task 2 ends at tick<br>
>> > 20029.<br>
>> > +Job 7 Task 2 starts at tick 20029.<br>
>> > +                                        Job 7 Task 2 ends at tick<br>
>> > 21031.<br>
>> > +Job 8 Task 2 starts at tick 21031.<br>
>> > +                                        Job 8 Task 2 ends at tick<br>
>> > 22033.<br>
>> > +Job 9 Task 2 starts at tick 22033.<br>
>> > +                                        Job 9 Task 2 ends at tick<br>
>> > 23035.<br>
>> > +Job 10 Task 2 starts at tick 24022.<br>
>> > +                                        Job 10 Task 2 ends at tick<br>
>> > 25023.<br>
>> > +Job 11 Task 2 starts at tick 26022.<br>
>> > +                                        Job 11 Task 2 ends at tick<br>
>> > 27024.<br>
>> > +Job 12 Task 2 starts at tick 28022.<br>
>> > +                                        Job 12 Task 2 ends at tick<br>
>> > 29024.<br>
>> > +Job 13 Task 2 starts at tick 30022.<br>
>> > +                                        Job 13 Task 2 ends at tick<br>
>> > 31023.<br>
>> > +Job 14 Task 2 starts at tick 32022.<br>
>> > +                                        Job 14 Task 2 ends at tick<br>
>> > 33023.<br>
>> > +Job 15 Task 2 starts at tick 34022.<br>
>> > +                                        Job 15 Task 2 ends at tick<br>
>> > 35023.<br>
>> > +Job 16 Task 2 starts at tick 36022.<br>
>> > +                                        Job 16 Task 2 ends at tick<br>
>> > 37023.<br>
>> > +Period information by period<br>
>> > +--- CPU times are in seconds ---<br>
>> > +--- Wall times are in seconds ---<br>
>> > +   ID     OWNER COUNT MISSED          CPU TIME                  WALL<br>
>> > TIME<br>
>> > +                                    MIN/MAX/AVG<br>
>> > MIN/MAX/AVG<br>
>> > +0x42010002 TA2     15      6 1.001686/7.012146/2.404131<br>
>> > 1.001698/13.013378/5.204723<br>
>> > +*** END OF TEST Rate Monotonic 01 ***<br>
>> > diff --git a/testsuites/sptests/<wbr>sprmsched01/system.h<br>
>> > b/testsuites/sptests/<wbr>sprmsched01/system.h<br>
>> > new file mode 100644<br>
>> > index 0000000..e4c6ade<br>
>> > --- /dev/null<br>
>> > +++ b/testsuites/sptests/<wbr>sprmsched01/system.h<br>
>> > @@ -0,0 +1,64 @@<br>
>> > +/**<br>
>> > + * @file sprmsched01/system.h<br>
>> > + *<br>
>> > + * @brief sprmsched01 example header<br>
>> > + */<br>
>> > +<br>
>> > +/*<br>
>> > + *  COPYRIGHT (c) 1989-2007.<br>
>> > + *  On-Line Applications Research Corporation (OAR).<br>
>> > + *<br>
>> > + *  COPYRIGHT (c) 2016 Kuan-Hsun Chen, TU Dortmund University (TUDo).<br>
>> > + *<br>
>> > + *  The license and distribution terms for this file may be<br>
>> > + *  found in the file LICENSE in this distribution or at<br>
>> > + *  <a href="http://www.rtems.com/license/LICENSE" rel="noreferrer" target="_blank">http://www.rtems.com/license/<wbr>LICENSE</a>.<br>
>> > + */<br>
>> > +<br>
>> > +<br>
>> > +#include <inttypes.h><br>
>> > +#include <rtems.h><br>
>> > +<br>
>> > +#include <tmacros.h><br>
>> > +<br>
>> > +/* function prototypes */<br>
>> > +<br>
>> > +rtems_task Init(<br>
>> > +  rtems_task_argument argument<br>
>> > +);<br>
>> > +<br>
>> > +rtems_task Task_1(<br>
>> > +  rtems_task_argument argument<br>
>> > +);<br>
>> > +<br>
>> > +rtems_task Task_2(<br>
>> > +  rtems_task_argument argument<br>
>> > +);<br>
>> > +<br>
>> > +/*<br>
>> > + *  Keep the names and IDs in global variables so another task can use<br>
>> > them.<br>
>> > + */<br>
>> > +<br>
>> > +extern rtems_id   Task_id[ 2 ];         /* array of task ids */<br>
>> > +extern rtems_name Task_name[ 2 ];       /* array of task names */<br>
>> > +extern uint32_t tick_per_second;        /* time reference */<br>
>> > +extern int testnumber;                  /* stop condition */<br>
>> > +<br>
>> > +/* configuration information */<br>
>> > +<br>
>> > +#include <bsp.h> /* for device driver prototypes */<br>
>> > +<br>
>> > +#define CONFIGURE_APPLICATION_NEEDS_<wbr>CONSOLE_DRIVER<br>
>> > +#define CONFIGURE_APPLICATION_NEEDS_<wbr>CLOCK_DRIVER<br>
>> > +#define CONFIGURE_MICROSECONDS_PER_<wbr>TICK     1000   // NB: 10 and lower<br>
>> > gives system failure for erc32 simulator<br>
>> > +#define CONFIGURE_MAXIMUM_TASKS             3<br>
>> > +#define CONFIGURE_MAXIMUM_SEMAPHORES        1<br>
>> > +#define CONFIGURE_MAXIMUM_PRIORITY          15<br>
>> > +#define CONFIGURE_EXTRA_TASK_STACKS         (20 *<br>
>> > RTEMS_MINIMUM_STACK_SIZE)<br>
>> > +#define CONFIGURE_MAXIMUM_PERIODS           3<br>
>> > +<br>
>> > +#define CONFIGURE_RTEMS_INIT_TASKS_<wbr>TABLE<br>
>> > +<br>
>> > +#include <rtems/confdefs.h><br>
>> > +<br>
>> > +/* end of include file */<br>
>> > diff --git a/testsuites/sptests/<wbr>sprmsched01/tasks.c<br>
>> > b/testsuites/sptests/<wbr>sprmsched01/tasks.c<br>
>> > new file mode 100644<br>
>> > index 0000000..8cb06e6<br>
>> > --- /dev/null<br>
>> > +++ b/testsuites/sptests/<wbr>sprmsched01/tasks.c<br>
>> > @@ -0,0 +1,104 @@<br>
>> > +/**<br>
>> > + * @file sprmsched01/tasks.c<br>
>> > + *<br>
>> > + * @brief A heuristic example to demonstrate how the postponed jobs are<br>
>> > handled.<br>
>> > + *<br>
>> > + * Given two tasks with implicit deadline under fixed-priority<br>
>> > scheudling.<br>
>> > + * Task 1 has (6, 10) and task 2 has (1, 2), where (execution time,<br>
>> > deadline/period).<br>
>> > + * To force deadline misses, we reverse the rate-monotonic priority<br>
>> > assignment<br>
>> > + * and only execute the highest priority task twice.<br>
>> > + * In the original implementation in v4.11, no matter how many periods<br>
>> > are<br>
>> > + * expired, RMS manager only releases a job with a shifted deadline<br>
>> > assignment<br>
>> > + * in the watchdog.<br>
>> > + *<br>
>> > + */<br>
>> > +<br>
>> > +/*<br>
>> > + *  COPYRIGHT (c) 2016 Kuan-Hsun Chen, TU Dortmund University (TUDo).<br>
>> > + *<br>
>> > + *  The license and distribution terms for this file may be<br>
>> > + *  found in the file LICENSE in this distribution or at<br>
>> > + *  <a href="http://www.rtems.com/license/LICENSE" rel="noreferrer" target="_blank">http://www.rtems.com/license/<wbr>LICENSE</a>.<br>
>> > + */<br>
>> > +<br>
>> > +#ifdef HAVE_CONFIG_H<br>
>> > +#include "config.h"<br>
>> > +#endif<br>
>> > +<br>
>> > +#include "system.h"<br>
>> > +<br>
>> > +/* CPU usage and Rate monotonic manger statistics */<br>
>> > +#include "rtems/cpuuse.h"<br>
>> > +#include "rtems/counter.h"<br>
>> > +<br>
>> > +/* Periods for the various tasks [ticks] */<br>
>> > +uint32_t Periods[3] = {0, 10000, 2000};<br>
>> > +uint32_t Iterations[3] = {0, 6000, 1000};<br>
>> > +uint32_t tsk_counter[3] = {0, 0, 0};<br>
>> > +<br>
>> > +/**<br>
>> > + * @brief Task 1 body<br>
>> > + */<br>
>> > +rtems_task Task_1(<br>
>> > +  rtems_task_argument argument<br>
>> > +)<br>
>> > +{<br>
>> > +  rtems_status_code status;<br>
>> > +  rtems_id          RM_period;<br>
>> > +  rtems_id          selfid=rtems_task_self();<br>
>> > +  int               start, end, flag=0;<br>
>> > +  rtems_counter_ticks t0;<br>
>> > +  t0 = rtems_counter_nanoseconds_to_<wbr>ticks(1000000); //1ms ticks counter<br>
>> > +  /*create period*/<br>
>> > +  status = rtems_rate_monotonic_create( argument, &RM_period );<br>
>> > +  directive_failed( status, "rtems_rate_monotonic_create" );<br>
>> > +<br>
>> > +  switch ( argument ) {<br>
>> > +    case 1:<br>
>> > +    case 2:<br>
>> > +      while ( FOREVER ) {<br>
>> > +        status = rtems_rate_monotonic_period( RM_period,<br>
>> > Periods[argument]);<br>
>> > +        //directive_failed( status, "rtems_rate_monotonic_period" );<br>
>> > let TIMEOUT pass<br>
>> > +        if(argument == 2 && flag == 0 && status == RTEMS_TIMEOUT){<br>
>> > +          flag = 1;<br>
>> > +          printf("RTEMS_TIMEOUT\n");<br>
>> > +        }else if(flag == 1 && status == RTEMS_SUCCESSFUL){<br>
>> > +          flag = 0;<br>
>> > +          printf("RTEMS_SUCCESSFUL\n");<br>
>> > +        }<br>
>> > +<br>
>> > +        start = rtems_clock_get_ticks_since_<wbr>boot();<br>
>> > +        if (argument == 2)<br>
>> > +          printf("Job %d Task %d starts at tick %d.\n",<br>
>> > tsk_counter[argument]+1, argument, start);<br>
>> > +        else<br>
>> > +          printf("Task %d starts at tick %d.\n", argument, start);<br>
>> > +        for(int i=0; i<Iterations[argument]; i++){<br>
>> > +          rtems_counter_delay_ticks(t0);<br>
>> > +        }<br>
>> > +        end = rtems_clock_get_ticks_since_<wbr>boot();<br>
>> > +        printf("                                       Job %d Task %d<br>
>> > ends at tick %d.\n", tsk_counter[argument]+1, argument, end);<br>
>> > +        if( argument == 2 ){<br>
>> > +          if(tsk_counter[ argument ] == testnumber){<br>
>> > +            //rtems_rate_monotonic_report_<wbr>statistics();<br>
>> > +            TEST_END();<br>
>> > +            status = rtems_rate_monotonic_delete(<wbr>RM_period);<br>
>> > +            directive_failed( status, "rtems_rate_monotonic_delete" );<br>
>> > +            rtems_test_exit(0);<br>
>> > +          }<br>
>> > +        }<br>
>> > +<br>
>> > +        tsk_counter[ argument ]+=1;<br>
>> > +        if ( argument == 1 ){<br>
>> > +          if( tsk_counter[ argument ] == 2 ){<br>
>> > +                                   status =<br>
>> > rtems_rate_monotonic_delete(<wbr>RM_period);<br>
>> > +            directive_failed( status, "rtems_rate_monotonic_delete" );<br>
>> > +            status = rtems_task_delete(selfid);<br>
>> > +            directive_failed( status, "rtems_task_delete" );<br>
>> > +          }<br>
>> > +        }<br>
>> > +      }<br>
>> > +      break;<br>
>> > +<br>
>> > +  }<br>
>> > +}<br>
>> > +<br>
>> > --<br>
>> > 1.9.1<br>
>> ><br>
>> > ______________________________<wbr>_________________<br>
>> > devel mailing list<br>
>> > <a href="mailto:devel@rtems.org">devel@rtems.org</a><br>
>> > <a href="http://lists.rtems.org/mailman/listinfo/devel" rel="noreferrer" target="_blank">http://lists.rtems.org/<wbr>mailman/listinfo/devel</a><br>
><br>
><br>
</div></div></blockquote></div><br></div></div>