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/src/scheduleredfyield.c | |
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/src/scheduleredfyield.c')
-rw-r--r-- | cpukit/score/src/scheduleredfyield.c | 33 |
1 files changed, 11 insertions, 22 deletions
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 ); } |