diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2011-09-20 13:06:42 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2011-09-20 13:06:42 +0000 |
commit | 40ee2fc0bec20961a4d7c3a324eb84c09d81ded3 (patch) | |
tree | 5c028d2ce22c52e1660584042095ffe129cd1725 /cpukit/score | |
parent | 2011-09-19 Joel Sherrill <joel.sherrill@oarcorp.com> (diff) | |
download | rtems-40ee2fc0bec20961a4d7c3a324eb84c09d81ded3.tar.bz2 |
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.
Diffstat (limited to 'cpukit/score')
-rw-r--r-- | cpukit/score/src/schedulercbsreleasejob.c | 4 | ||||
-rw-r--r-- | cpukit/score/src/scheduleredfupdate.c | 12 | ||||
-rw-r--r-- | cpukit/score/src/scheduleredfyield.c | 33 |
3 files changed, 13 insertions, 36 deletions
diff --git a/cpukit/score/src/schedulercbsreleasejob.c b/cpukit/score/src/schedulercbsreleasejob.c index c64b60ffb1..3587c01ce1 100644 --- a/cpukit/score/src/schedulercbsreleasejob.c +++ b/cpukit/score/src/schedulercbsreleasejob.c @@ -31,7 +31,7 @@ void _Scheduler_CBS_Release_job( if (deadline) { /* Initializing or shifting deadline. */ - if (serv_info && serv_info->parameters.budget) + if (serv_info) new_priority = (_Watchdog_Ticks_since_boot + serv_info->parameters.deadline) & ~SCHEDULER_EDF_PRIO_MSB; else @@ -44,7 +44,7 @@ void _Scheduler_CBS_Release_job( } /* Budget replenishment for the next job. */ - if (serv_info && serv_info->parameters.budget) + if (serv_info) the_thread->cpu_time_budget = serv_info->parameters.budget; the_thread->real_priority = new_priority; diff --git a/cpukit/score/src/scheduleredfupdate.c b/cpukit/score/src/scheduleredfupdate.c index a4592d8c46..a5ba1ce8de 100644 --- a/cpukit/score/src/scheduleredfupdate.c +++ b/cpukit/score/src/scheduleredfupdate.c @@ -35,16 +35,4 @@ void _Scheduler_EDF_Update( the_thread->current_priority = the_thread->Start.initial_priority; sched_info->queue_state = SCHEDULER_EDF_QUEUE_STATE_NOT_PRESENTLY; } - - 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; - } - } } diff --git a/cpukit/score/src/scheduleredfyield.c b/cpukit/score/src/scheduleredfyield.c index be1b07a5c5..3b171bfe62 100644 --- a/cpukit/score/src/scheduleredfyield.c +++ b/cpukit/score/src/scheduleredfyield.c @@ -21,8 +21,6 @@ void _Scheduler_EDF_Yield(void) { - Scheduler_EDF_Per_thread *first_info; - RBTree_Node *first_node; ISR_Level level; Thread_Control *executing = _Thread_Executing; @@ -32,26 +30,17 @@ void _Scheduler_EDF_Yield(void) _ISR_Disable( level ); - 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; + /* + * 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; _ISR_Enable( level ); } |