summaryrefslogtreecommitdiffstats
path: root/cpukit/score
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2011-09-20 13:06:42 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2011-09-20 13:06:42 +0000
commit40ee2fc0bec20961a4d7c3a324eb84c09d81ded3 (patch)
tree5c028d2ce22c52e1660584042095ffe129cd1725 /cpukit/score
parent2011-09-19 Joel Sherrill <joel.sherrill@oarcorp.com> (diff)
downloadrtems-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.c4
-rw-r--r--cpukit/score/src/scheduleredfupdate.c12
-rw-r--r--cpukit/score/src/scheduleredfyield.c33
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 );
}