<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>change log for rtems (2011-09-20)</title>
</head>
<body text='#000000' bgcolor='#ffffff'>
<a name='cs1'></a>
<table border='0' cellspacing='0' cellpadding='5' width='100%' bgcolor='#eeeeee'>
<tr><td colspan='3' bgcolor='#dddddd'>
 <font color='#bb2222'><strong>joel</strong></font>
</td></tr>
<tr><td colspan='3' bgcolor='#dddddd'><pre>2011-09-20 Petr Benes <benesp16@fel.cvut.cz>

        PR 1916/testing
        * rtems/src/ratemondelete.c, score/src/schedulercbsreleasejob.c,
        score/src/scheduleredfupdate.c, score/src/scheduleredfyield.c: Rework
        to improve coverage.
</pre></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/ChangeLog.diff?r1=text&tr1=1.2923&r2=text&tr2=1.2924&diff_format=h">M</a></td><td width='1%'>1.2924</td><td width='100%'>cpukit/ChangeLog</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/rtems/src/ratemondelete.c.diff?r1=text&tr1=1.11&r2=text&tr2=1.12&diff_format=h">M</a></td><td width='1%'>1.12</td><td width='100%'>cpukit/rtems/src/ratemondelete.c</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/score/src/schedulercbsreleasejob.c.diff?r1=text&tr1=1.1&r2=text&tr2=1.2&diff_format=h">M</a></td><td width='1%'>1.2</td><td width='100%'>cpukit/score/src/schedulercbsreleasejob.c</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/score/src/scheduleredfupdate.c.diff?r1=text&tr1=1.1&r2=text&tr2=1.2&diff_format=h">M</a></td><td width='1%'>1.2</td><td width='100%'>cpukit/score/src/scheduleredfupdate.c</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/score/src/scheduleredfyield.c.diff?r1=text&tr1=1.1&r2=text&tr2=1.2&diff_format=h">M</a></td><td width='1%'>1.2</td><td width='100%'>cpukit/score/src/scheduleredfyield.c</td></tr>
</table>
<pre>
<font color='#006600'>diff -u rtems/cpukit/ChangeLog:1.2923 rtems/cpukit/ChangeLog:1.2924
--- rtems/cpukit/ChangeLog:1.2923       Fri Sep 16 04:16:31 2011
+++ rtems/cpukit/ChangeLog      Tue Sep 20 08:06:41 2011
</font><font color='#997700'>@@ -1,3 +1,10 @@
</font><font color='#000088'>+2011-09-20    Petr Benes <benesp16@fel.cvut.cz>
+
+       PR 1916/testing
+       * rtems/src/ratemondelete.c, score/src/schedulercbsreleasejob.c,
+       score/src/scheduleredfupdate.c, score/src/scheduleredfyield.c: Rework
+       to improve coverage.
+
</font> 2011-09-16        Sebastian Huber <sebastian.huber@embedded-brains.de>
 
        * libmisc/shell/shell-wait-for-input.c: New file.

<font color='#006600'>diff -u rtems/cpukit/rtems/src/ratemondelete.c:1.11 rtems/cpukit/rtems/src/ratemondelete.c:1.12
--- rtems/cpukit/rtems/src/ratemondelete.c:1.11 Thu Sep  1 13:13:54 2011
+++ rtems/cpukit/rtems/src/ratemondelete.c      Tue Sep 20 08:06:41 2011
</font><font color='#997700'>@@ -47,11 +47,11 @@
</font>   switch ( location ) {
 
     case OBJECTS_LOCAL:
<font color='#000088'>+      _Scheduler_Release_job(the_period->owner, 0);
</font>       _Objects_Close( &_Rate_monotonic_Information, &the_period->Object );
       (void) _Watchdog_Remove( &the_period->Timer );
       the_period->state = RATE_MONOTONIC_INACTIVE;
       _Rate_monotonic_Free( the_period );
<font color='#880000'>-      _Scheduler_Release_job(the_period->owner, 0);
</font>       _Thread_Enable_dispatch();
       return RTEMS_SUCCESSFUL;
 

<font color='#006600'>diff -u rtems/cpukit/score/src/schedulercbsreleasejob.c:1.1 rtems/cpukit/score/src/schedulercbsreleasejob.c:1.2
--- rtems/cpukit/score/src/schedulercbsreleasejob.c:1.1 Thu Sep 15 10:49:32 2011
+++ rtems/cpukit/score/src/schedulercbsreleasejob.c     Tue Sep 20 08:06:41 2011
</font><font color='#997700'>@@ -31,7 +31,7 @@
</font> 
   if (deadline) {
     /* Initializing or shifting deadline. */
<font color='#880000'>-    if (serv_info && serv_info->parameters.budget)
</font><font color='#000088'>+    if (serv_info)
</font>       new_priority = (_Watchdog_Ticks_since_boot + serv_info->parameters.deadline)
         & ~SCHEDULER_EDF_PRIO_MSB;
     else
<font color='#997700'>@@ -44,7 +44,7 @@
</font>   }
 
   /* Budget replenishment for the next job. */
<font color='#880000'>-  if (serv_info && serv_info->parameters.budget)
</font><font color='#000088'>+  if (serv_info)
</font>     the_thread->cpu_time_budget = serv_info->parameters.budget;
 
   the_thread->real_priority = new_priority;

<font color='#006600'>diff -u rtems/cpukit/score/src/scheduleredfupdate.c:1.1 rtems/cpukit/score/src/scheduleredfupdate.c:1.2
--- rtems/cpukit/score/src/scheduleredfupdate.c:1.1     Sun Sep 11 15:52:37 2011
+++ rtems/cpukit/score/src/scheduleredfupdate.c Tue Sep 20 08:06:42 2011
</font><font color='#997700'>@@ -35,16 +35,4 @@
</font>     the_thread->current_priority = the_thread->Start.initial_priority;
     sched_info->queue_state = SCHEDULER_EDF_QUEUE_STATE_NOT_PRESENTLY;
   }
<font color='#880000'>-
-  if ( sched_info->queue_state == SCHEDULER_EDF_QUEUE_STATE_YES ) {
-    _RBTree_Extract(&_Scheduler_EDF_Ready_queue, the_node);
-    _RBTree_Insert(&_Scheduler_EDF_Ready_queue, the_node);
-
-    _Scheduler_EDF_Schedule();
-    if ( _Thread_Executing != _Thread_Heir ) {
-      if ( _Thread_Executing->is_preemptible ||
-           the_thread->current_priority == 0 )
-        _Thread_Dispatch_necessary = true;
-    }
-  }
</font> }

<font color='#006600'>diff -u rtems/cpukit/score/src/scheduleredfyield.c:1.1 rtems/cpukit/score/src/scheduleredfyield.c:1.2
--- rtems/cpukit/score/src/scheduleredfyield.c:1.1      Sun Sep 11 15:52:37 2011
+++ rtems/cpukit/score/src/scheduleredfyield.c  Tue Sep 20 08:06:42 2011
</font><font color='#997700'>@@ -21,8 +21,6 @@
</font> 
 void _Scheduler_EDF_Yield(void)
 {
<font color='#880000'>-  Scheduler_EDF_Per_thread *first_info;
-  RBTree_Node              *first_node;
</font>   ISR_Level                 level;
 
   Thread_Control *executing  = _Thread_Executing;
<font color='#997700'>@@ -32,26 +30,17 @@
</font> 
   _ISR_Disable( level );
 
<font color='#880000'>-  if ( !_RBTree_Has_only_one_node(&_Scheduler_EDF_Ready_queue) ) {
-    /*
-     * The RBTree has more than one node, enqueue behind the tasks
-     * with the same priority in case there are such ones.
-     */
-    _RBTree_Extract( &_Scheduler_EDF_Ready_queue, executing_node );
-    _RBTree_Insert( &_Scheduler_EDF_Ready_queue, executing_node );
-
-    _ISR_Flash( level );
-
-    if ( _Thread_Is_heir( executing ) ) {
-      first_node = _RBTree_Peek( &_Scheduler_EDF_Ready_queue, RBT_LEFT );
-      first_info =
-        _RBTree_Container_of(first_node, Scheduler_EDF_Per_thread, Node);
-      _Thread_Heir = first_info->thread;
-    }
-    _Thread_Dispatch_necessary = true;
-  }
-  else if ( !_Thread_Is_heir( executing ) )
-    _Thread_Dispatch_necessary = true;
</font><font color='#000088'>+  /*
+   * The RBTree has more than one node, enqueue behind the tasks
+   * with the same priority in case there are such ones.
+   */
+  _RBTree_Extract( &_Scheduler_EDF_Ready_queue, executing_node );
+  _RBTree_Insert( &_Scheduler_EDF_Ready_queue, executing_node );
+
+  _ISR_Flash( level );
+
+  _Scheduler_EDF_Schedule();
+  _Thread_Dispatch_necessary = true;
</font> 
   _ISR_Enable( level );
 }
</pre>
<p> </p>
<a name='cs2'></a>
<table border='0' cellspacing='0' cellpadding='5' width='100%' bgcolor='#eeeeee'>
<tr><td colspan='3' bgcolor='#dddddd'>
 <font color='#bb2222'><strong>joel</strong></font>
</td></tr>
<tr><td colspan='3' bgcolor='#dddddd'><pre>2011-09-20 Petr Benes <benesp16@fel.cvut.cz>

        PR 1916/testing
        * spcbssched02/init.c, spcbssched02/spcbssched02.scn,
        spcbssched02/system.h, spcbssched02/task_periodic.c,
        spedfsched03/init.c, spedfsched03/system.h,
        spedfsched03/tasks_aperiodic.c: Improve coverage.
</pre></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/testsuites/sptests/ChangeLog.diff?r1=text&tr1=1.486&r2=text&tr2=1.487&diff_format=h">M</a></td><td width='1%'>1.487</td><td width='100%'>testsuites/sptests/ChangeLog</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/testsuites/sptests/spcbssched02/init.c.diff?r1=text&tr1=1.1&r2=text&tr2=1.2&diff_format=h">M</a></td><td width='1%'>1.2</td><td width='100%'>testsuites/sptests/spcbssched02/init.c</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/testsuites/sptests/spcbssched02/spcbssched02.scn.diff?r1=text&tr1=1.1&r2=text&tr2=1.2&diff_format=h">M</a></td><td width='1%'>1.2</td><td width='100%'>testsuites/sptests/spcbssched02/spcbssched02.scn</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/testsuites/sptests/spcbssched02/system.h.diff?r1=text&tr1=1.1&r2=text&tr2=1.2&diff_format=h">M</a></td><td width='1%'>1.2</td><td width='100%'>testsuites/sptests/spcbssched02/system.h</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/testsuites/sptests/spcbssched02/task_periodic.c.diff?r1=text&tr1=1.1&r2=text&tr2=1.2&diff_format=h">M</a></td><td width='1%'>1.2</td><td width='100%'>testsuites/sptests/spcbssched02/task_periodic.c</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/testsuites/sptests/spedfsched03/init.c.diff?r1=text&tr1=1.1&r2=text&tr2=1.2&diff_format=h">M</a></td><td width='1%'>1.2</td><td width='100%'>testsuites/sptests/spedfsched03/init.c</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/testsuites/sptests/spedfsched03/system.h.diff?r1=text&tr1=1.1&r2=text&tr2=1.2&diff_format=h">M</a></td><td width='1%'>1.2</td><td width='100%'>testsuites/sptests/spedfsched03/system.h</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/testsuites/sptests/spedfsched03/tasks_aperiodic.c.diff?r1=text&tr1=1.1&r2=text&tr2=1.2&diff_format=h">M</a></td><td width='1%'>1.2</td><td width='100%'>testsuites/sptests/spedfsched03/tasks_aperiodic.c</td></tr>
</table>
<pre>
<font color='#006600'>diff -u rtems/testsuites/sptests/ChangeLog:1.486 rtems/testsuites/sptests/ChangeLog:1.487
--- rtems/testsuites/sptests/ChangeLog:1.486    Thu Sep 15 10:58:46 2011
+++ rtems/testsuites/sptests/ChangeLog  Tue Sep 20 08:06:58 2011
</font><font color='#997700'>@@ -1,3 +1,11 @@
</font><font color='#000088'>+2011-09-20    Petr Benes <benesp16@fel.cvut.cz>
+
+       PR 1916/testing
+       * spcbssched02/init.c, spcbssched02/spcbssched02.scn,
+       spcbssched02/system.h, spcbssched02/task_periodic.c,
+       spedfsched03/init.c, spedfsched03/system.h,
+       spedfsched03/tasks_aperiodic.c: Improve coverage.
+
</font> 2011-09-15        Joel Sherrill <joel.sherrill@oarcorp.com>
 
        * spcbssched01/Makefile.am, spcbssched02/Makefile.am,

<font color='#006600'>diff -u rtems/testsuites/sptests/spcbssched02/init.c:1.1 rtems/testsuites/sptests/spcbssched02/init.c:1.2
--- rtems/testsuites/sptests/spcbssched02/init.c:1.1    Thu Sep 15 10:56:01 2011
+++ rtems/testsuites/sptests/spcbssched02/init.c        Tue Sep 20 08:06:58 2011
</font><font color='#997700'>@@ -47,6 +47,7 @@
</font>   puts( "\n\n*** TEST CBS SCHEDULER 2 ***" );
 
   Task_name = rtems_build_name( 'P', 'T', '1', ' ' );
<font color='#000088'>+  Task_name2 = rtems_build_name( 'P', 'T', '2', ' ' );
</font> 
   status = rtems_task_create(
     Task_name,
<font color='#997700'>@@ -58,6 +59,16 @@
</font>   );
   directive_failed( status, "rtems_task_create loop" );
 
<font color='#000088'>+  status = rtems_task_create(
+    Task_name2,
+    Priority,
+    RTEMS_MINIMUM_STACK_SIZE * 4,
+    RTEMS_NO_PREEMPT,
+    RTEMS_DEFAULT_ATTRIBUTES,
+    &Task_id2
+  );
+  directive_failed( status, "rtems_task_create loop" );
+
</font>   printf( "Init: Initializing the CBS\n" );
   if ( rtems_cbs_initialize() )
     printf( "ERROR: CBS INITIALIZATION FAILED\n" );
<font color='#997700'>@@ -88,6 +99,8 @@
</font>     printf( "ERROR: CREATE SERVER FAILED\n" );
   if ( rtems_cbs_create_server( &params, NULL, &server_id ) )
     printf( "ERROR: CREATE SERVER FAILED\n" );
<font color='#000088'>+  if ( rtems_cbs_create_server( &params, NULL, &server_id ) )
+    printf( "ERROR: CREATE SERVER FAILED\n" );
</font>   if ( rtems_cbs_create_server( &params, NULL, &server_id ) !=
        SCHEDULER_CBS_ERROR_FULL )
     printf( "ERROR: CREATE SERVER PASSED UNEXPECTEDLY\n" );
<font color='#997700'>@@ -217,11 +230,25 @@
</font>   if ( rtems_cbs_initialize() )
     printf( "ERROR: CBS INITIALIZATION FAILED\n" );
 
<font color='#880000'>-  /* Start periodic task */
</font><font color='#000088'>+  /* Start periodic tasks */
</font>   printf( "Init: Starting periodic task\n" );
   status = rtems_task_start( Task_id, Task_Periodic, 1 );
   directive_failed( status, "rtems_task_start periodic" );
<font color='#000088'>+  status = rtems_task_start( Task_id2, Task_Periodic, 2 );
+  directive_failed( status, "rtems_task_start periodic" );
+
+  rtems_task_wake_after( 130 );
+
+  printf( "Init: Checking server with a deleted task\n" );
+  if ( rtems_cbs_get_execution_time( 0, &exec_time, &abs_time ) )
+    printf( "ERROR: GET EXECUTION TIME FAILED\n" );
+  if ( rtems_cbs_get_remaining_budget( 0, &remaining_budget) )
+    printf( "ERROR: GET REMAINING BUDGET FAILED\n" );
+
+  if ( rtems_cbs_cleanup() )
+    printf( "ERROR: CBS CLEANUP\n" );
</font> 
<font color='#880000'>-  status = rtems_task_delete( RTEMS_SELF );
-  directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
</font><font color='#000088'>+  fflush(stdout);
+  puts( "*** END OF TEST CBS SCHEDULER 2 ***" );
+  rtems_test_exit( 0 );
</font> }

<font color='#006600'>diff -u rtems/testsuites/sptests/spcbssched02/spcbssched02.scn:1.1 rtems/testsuites/sptests/spcbssched02/spcbssched02.scn:1.2
--- rtems/testsuites/sptests/spcbssched02/spcbssched02.scn:1.1  Thu Sep 15 10:56:01 2011
+++ rtems/testsuites/sptests/spcbssched02/spcbssched02.scn      Tue Sep 20 08:06:58 2011
</font><font color='#997700'>@@ -27,4 +27,6 @@
</font> P1-S ticks:91
 P1-F ticks:101
 P1-S ticks:121
<font color='#000088'>+Periodic task: Deleting self
+Init: Checking server with a deleted task
</font> *** END OF TEST CBS SCHEDULER 2 ***

<font color='#006600'>diff -u rtems/testsuites/sptests/spcbssched02/system.h:1.1 rtems/testsuites/sptests/spcbssched02/system.h:1.2
--- rtems/testsuites/sptests/spcbssched02/system.h:1.1  Thu Sep 15 10:56:01 2011
+++ rtems/testsuites/sptests/spcbssched02/system.h      Tue Sep 20 08:06:58 2011
</font><font color='#997700'>@@ -32,7 +32,7 @@
</font> 
 #define CONFIGURE_MICROSECONDS_PER_TICK 100000
 
<font color='#880000'>-#define CONFIGURE_MAXIMUM_TASKS               2
</font><font color='#000088'>+#define CONFIGURE_MAXIMUM_TASKS               3
</font> #define CONFIGURE_MAXIMUM_PERIODS             10
 
 #define CONFIGURE_INIT_TASK_PRIORITY          100
<font color='#997700'>@@ -54,6 +54,8 @@
</font> 
 rtems_id   Task_id;
 rtems_name Task_name;
<font color='#000088'>+rtems_id   Task_id2;
+rtems_name Task_name2;
</font> rtems_task_priority Priority;
 time_t  Period;
 time_t  Execution;

<font color='#006600'>diff -u rtems/testsuites/sptests/spcbssched02/task_periodic.c:1.1 rtems/testsuites/sptests/spcbssched02/task_periodic.c:1.2
--- rtems/testsuites/sptests/spcbssched02/task_periodic.c:1.1   Thu Sep 15 10:56:01 2011
+++ rtems/testsuites/sptests/spcbssched02/task_periodic.c       Tue Sep 20 08:06:58 2011
</font><font color='#997700'>@@ -34,61 +34,64 @@
</font>   params.deadline = Period;
   params.budget = Execution+1;
 
<font color='#880000'>-  printf( "Periodic task: Create server and Attach thread\n" );
-  if ( rtems_cbs_create_server( &params, NULL, &server_id ) )
-    printf( "ERROR: CREATE SERVER FAILED\n" );
-  if ( rtems_cbs_attach_thread( server_id, Task_id ) )
-    printf( "ERROR: ATTACH THREAD FAILED\n" );
-
-  printf( "Periodic task: ID and Get parameters\n" );
-  if ( rtems_cbs_get_server_id( Task_id, &tsid ) )
-    printf( "ERROR: GET SERVER ID FAILED\n" );
-  if ( tsid != server_id )
-    printf( "ERROR: SERVER ID MISMATCH\n" );
-  if ( rtems_cbs_get_parameters( server_id, &tparams ) )
-    printf( "ERROR: GET PARAMETERS FAILED\n" );
-  if ( params.deadline != tparams.deadline ||
-       params.budget != tparams.budget )
-    printf( "ERROR: PARAMETERS MISMATCH\n" );
-
-  printf( "Periodic task: Detach thread and Destroy server\n" );
-  if ( rtems_cbs_detach_thread( server_id, Task_id ) )
-    printf( "ERROR: DETACH THREAD FAILED\n" );
-  if ( rtems_cbs_destroy_server( server_id ) )
-    printf( "ERROR: DESTROY SERVER FAILED\n" );
-  if ( rtems_cbs_create_server( &params, NULL, &server_id ) )
-    printf( "ERROR: CREATE SERVER FAILED\n" );
-
-  printf( "Periodic task: Remaining budget and Execution time\n" );
-  if ( rtems_cbs_get_remaining_budget( server_id, &remaining_budget ) )
-    printf( "ERROR: GET REMAINING BUDGET FAILED\n" );
-  if ( remaining_budget != params.budget )
-    printf( "ERROR: REMAINING BUDGET MISMATCH\n" );
-  if ( rtems_cbs_get_execution_time( server_id, &exec_time, &abs_time ) )
-    printf( "ERROR: GET EXECUTION TIME FAILED\n" );
-
-  printf( "Periodic task: Set parameters\n" );
-  if ( rtems_cbs_attach_thread( server_id, Task_id ) )
-    printf( "ERROR: ATTACH THREAD FAILED\n" );
-  params.deadline = Period * 2;
-  params.budget = Execution * 2 +1;
-  if ( rtems_cbs_set_parameters( server_id, &params ) )
-    printf( "ERROR: SET PARAMS FAILED\n" );
-  if ( rtems_cbs_get_parameters( server_id, &tparams ) )
-    printf( "ERROR: GET PARAMS FAILED\n" );
-  if ( params.deadline != tparams.deadline ||
-       params.budget != tparams.budget )
-    printf( "ERROR: PARAMS MISMATCH\n" );
-  params.deadline = Period;
-  params.budget = Execution+1;
-  if ( rtems_cbs_set_parameters( server_id, &params ) )
-    printf( "ERROR: SET PARAMS FAILED\n" );
-  if ( rtems_cbs_get_approved_budget( server_id, &approved_budget ) )
-    printf( "ERROR: GET APPROVED BUDGET FAILED\n" );
-
-  printf( "Periodic task: Approved budget\n" );
-  if ( approved_budget != params.budget )
-    printf( "ERROR: APPROVED BUDGET MISMATCH\n" );
</font><font color='#000088'>+  /* Taks 1 will be attached to a server, task 2 not. */
+  if ( argument == 1 ) {
+    printf( "Periodic task: Create server and Attach thread\n" );
+    if ( rtems_cbs_create_server( &params, NULL, &server_id ) )
+      printf( "ERROR: CREATE SERVER FAILED\n" );
+    if ( rtems_cbs_attach_thread( server_id, Task_id ) )
+      printf( "ERROR: ATTACH THREAD FAILED\n" );
+
+    printf( "Periodic task: ID and Get parameters\n" );
+    if ( rtems_cbs_get_server_id( Task_id, &tsid ) )
+      printf( "ERROR: GET SERVER ID FAILED\n" );
+    if ( tsid != server_id )
+      printf( "ERROR: SERVER ID MISMATCH\n" );
+    if ( rtems_cbs_get_parameters( server_id, &tparams ) )
+      printf( "ERROR: GET PARAMETERS FAILED\n" );
+    if ( params.deadline != tparams.deadline ||
+         params.budget != tparams.budget )
+      printf( "ERROR: PARAMETERS MISMATCH\n" );
+
+    printf( "Periodic task: Detach thread and Destroy server\n" );
+    if ( rtems_cbs_detach_thread( server_id, Task_id ) )
+      printf( "ERROR: DETACH THREAD FAILED\n" );
+    if ( rtems_cbs_destroy_server( server_id ) )
+      printf( "ERROR: DESTROY SERVER FAILED\n" );
+    if ( rtems_cbs_create_server( &params, NULL, &server_id ) )
+      printf( "ERROR: CREATE SERVER FAILED\n" );
+
+    printf( "Periodic task: Remaining budget and Execution time\n" );
+    if ( rtems_cbs_get_remaining_budget( server_id, &remaining_budget ) )
+      printf( "ERROR: GET REMAINING BUDGET FAILED\n" );
+    if ( remaining_budget != params.budget )
+      printf( "ERROR: REMAINING BUDGET MISMATCH\n" );
+    if ( rtems_cbs_get_execution_time( server_id, &exec_time, &abs_time ) )
+      printf( "ERROR: GET EXECUTION TIME FAILED\n" );
+
+    printf( "Periodic task: Set parameters\n" );
+    if ( rtems_cbs_attach_thread( server_id, Task_id ) )
+      printf( "ERROR: ATTACH THREAD FAILED\n" );
+    params.deadline = Period * 2;
+    params.budget = Execution * 2 +1;
+    if ( rtems_cbs_set_parameters( server_id, &params ) )
+      printf( "ERROR: SET PARAMS FAILED\n" );
+    if ( rtems_cbs_get_parameters( server_id, &tparams ) )
+      printf( "ERROR: GET PARAMS FAILED\n" );
+    if ( params.deadline != tparams.deadline ||
+         params.budget != tparams.budget )
+      printf( "ERROR: PARAMS MISMATCH\n" );
+    params.deadline = Period;
+    params.budget = Execution+1;
+    if ( rtems_cbs_set_parameters( server_id, &params ) )
+      printf( "ERROR: SET PARAMS FAILED\n" );
+    if ( rtems_cbs_get_approved_budget( server_id, &approved_budget ) )
+      printf( "ERROR: GET APPROVED BUDGET FAILED\n" );
+
+    printf( "Periodic task: Approved budget\n" );
+    if ( approved_budget != params.budget )
+      printf( "ERROR: APPROVED BUDGET MISMATCH\n" );
+  }
</font> 
   status = rtems_rate_monotonic_create( argument, &rmid );
   directive_failed( status, "rtems_rate_monotonic_create" );
<font color='#997700'>@@ -129,10 +132,7 @@
</font>     printf("rtems_rate_monotonic_delete failed with status of %d.\n", status);
     rtems_test_exit( 0 );
   }
<font color='#880000'>-  if ( rtems_cbs_cleanup() )
-    printf( "ERROR: CBS CLEANUP\n" );
-
-  fflush(stdout);
-  puts( "*** END OF TEST CBS SCHEDULER 2 ***" );
-  rtems_test_exit( 0 );
</font><font color='#000088'>+  printf( "Periodic task: Deleting self\n" );
+  status = rtems_task_delete( RTEMS_SELF );
+  directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
</font> }

<font color='#006600'>diff -u rtems/testsuites/sptests/spedfsched03/init.c:1.1 rtems/testsuites/sptests/spedfsched03/init.c:1.2
--- rtems/testsuites/sptests/spedfsched03/init.c:1.1    Sun Sep 11 15:56:45 2011
+++ rtems/testsuites/sptests/spedfsched03/init.c        Tue Sep 20 08:06:58 2011
</font><font color='#997700'>@@ -56,6 +56,8 @@
</font>     directive_failed( status, "rtems_task_start loop" );
   }
 
<font color='#000088'>+  rtems_task_wake_after( RTEMS_YIELD_PROCESSOR );
+
</font>   status = rtems_task_delete( RTEMS_SELF );
   directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
 }

<font color='#006600'>diff -u rtems/testsuites/sptests/spedfsched03/system.h:1.1 rtems/testsuites/sptests/spedfsched03/system.h:1.2
--- rtems/testsuites/sptests/spedfsched03/system.h:1.1  Sun Sep 11 15:56:45 2011
+++ rtems/testsuites/sptests/spedfsched03/system.h      Tue Sep 20 08:06:58 2011
</font><font color='#997700'>@@ -40,7 +40,7 @@
</font> #define CONFIGURE_MAXIMUM_PERIODS             10
 
 #define CONFIGURE_INIT_TASK_PRIORITY          100
<font color='#880000'>-#define CONFIGURE_INIT_TASK_INITIAL_MODES     RTEMS_DEFAULT_MODES
</font><font color='#000088'>+#define CONFIGURE_INIT_TASK_INITIAL_MODES     RTEMS_NO_PREEMPT
</font> #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
 
 #define CONFIGURE_EXTRA_TASK_STACKS         (6 * 4 * RTEMS_MINIMUM_STACK_SIZE)

<font color='#006600'>diff -u rtems/testsuites/sptests/spedfsched03/tasks_aperiodic.c:1.1 rtems/testsuites/sptests/spedfsched03/tasks_aperiodic.c:1.2
--- rtems/testsuites/sptests/spedfsched03/tasks_aperiodic.c:1.1 Sun Sep 11 15:56:45 2011
+++ rtems/testsuites/sptests/spedfsched03/tasks_aperiodic.c     Tue Sep 20 08:06:58 2011
</font><font color='#997700'>@@ -21,16 +21,21 @@
</font>   rtems_task_argument argument
 )
 {
<font color='#880000'>-  rtems_status_code  status;
-  int                start;
-  int                stop;
-  int                now;
</font><font color='#000088'>+  rtems_status_code   status;
+  int                 start;
+  int                 stop;
+  int                 now;
</font> 
   put_name( Task_name[ argument ], FALSE );
 
   status = rtems_task_wake_after( 2 + Phases[argument] );
   directive_failed( status, "rtems_task_wake_after" );
 
<font color='#000088'>+  if ( argument == 6 ) {
+    rtems_task_suspend( Task_id[5] );
+    rtems_task_resume( Task_id[5] );
+  }
+
</font>   rtems_clock_get(RTEMS_CLOCK_GET_TICKS_SINCE_BOOT, &start);
   printf("AT%" PRIdPTR "-S ticks:%d\n", argument, start);
   /* active computing */
</pre>
<p> </p>

<p>--<br />
<small>Generated by <a href="http://www.codewiz.org/projects/index.html#loginfo">Deluxe Loginfo</a> 2.122 by Bernardo Innocenti <bernie@develer.com></small></p>
</body>
</html>