diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2010-06-24 21:27:30 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2010-06-24 21:27:30 +0000 |
commit | 8bef4ccfb07a48ece38301b9740875f5cd9e0cad (patch) | |
tree | 29927169292cac392a56fbb9af1ecd5e693d25d4 | |
parent | 2010-06-24 Bharath Suri <bharath.s.jois@gmail.com> (diff) | |
download | rtems-8bef4ccfb07a48ece38301b9740875f5cd9e0cad.tar.bz2 |
2010-06-24 Gedare Bloom <giddyup44@yahoo.com>
PR 1590/cpukit
* score/Makefile.am, score/include/rtems/score/thread.h,
score/src/threadtickletimeslice.c: Remove _Thread_Reset_timeslice and
replaces its single use with a call to the functionally equivalent
_Thread_Yield_processor().
* score/src/threadresettimeslice.c: Removed.
-rw-r--r-- | cpukit/ChangeLog | 9 | ||||
-rw-r--r-- | cpukit/score/Makefile.am | 6 | ||||
-rw-r--r-- | cpukit/score/include/rtems/score/thread.h | 10 | ||||
-rw-r--r-- | cpukit/score/src/threadresettimeslice.c | 75 | ||||
-rw-r--r-- | cpukit/score/src/threadtickletimeslice.c | 11 |
5 files changed, 22 insertions, 89 deletions
diff --git a/cpukit/ChangeLog b/cpukit/ChangeLog index c8d8a155eb..174e1583a8 100644 --- a/cpukit/ChangeLog +++ b/cpukit/ChangeLog @@ -1,3 +1,12 @@ +2010-06-24 Gedare Bloom <giddyup44@yahoo.com> + + PR 1590/cpukit + * score/Makefile.am, score/include/rtems/score/thread.h, + score/src/threadtickletimeslice.c: Remove _Thread_Reset_timeslice and + replaces its single use with a call to the functionally equivalent + _Thread_Yield_processor(). + * score/src/threadresettimeslice.c: Removed. + 2010-06-24 Bharath Suri <bharath.s.jois@gmail.com> PR 1542/filesystem diff --git a/cpukit/score/Makefile.am b/cpukit/score/Makefile.am index 45d2d2ef55..2d63c72054 100644 --- a/cpukit/score/Makefile.am +++ b/cpukit/score/Makefile.am @@ -143,9 +143,9 @@ libscore_a_SOURCES += src/thread.c src/threadchangepriority.c \ src/threadclearstate.c src/threadclose.c src/threadcreateidle.c \ src/threaddelayended.c src/threaddispatch.c src/threadevaluatemode.c \ src/threadget.c src/threadhandler.c src/threadinitialize.c \ - src/threadloadenv.c src/threadready.c src/threadresettimeslice.c \ - src/threadreset.c src/threadrestart.c src/threadresume.c \ - src/threadsetpriority.c src/threadsetstate.c src/threadsettransient.c \ + src/threadloadenv.c src/threadready.c src/threadreset.c \ + src/threadrestart.c src/threadresume.c src/threadsetpriority.c \ + src/threadsetstate.c src/threadsettransient.c \ src/threadstackallocate.c src/threadstackfree.c src/threadstart.c \ src/threadstartmultitasking.c src/threadsuspend.c \ src/threadtickletimeslice.c src/threadyieldprocessor.c \ diff --git a/cpukit/score/include/rtems/score/thread.h b/cpukit/score/include/rtems/score/thread.h index e3a40caf36..ff6196e972 100644 --- a/cpukit/score/include/rtems/score/thread.h +++ b/cpukit/score/include/rtems/score/thread.h @@ -672,16 +672,6 @@ void _Thread_Set_transient( ); /** - * This routine is invoked upon expiration of the currently - * executing thread's timeslice. If no other thread's are ready - * at the priority of the currently executing thread, then the - * executing thread's timeslice is reset. Otherwise, the - * currently executing thread is placed at the rear of the - * FIFO for this priority and a new heir is selected. - */ -void _Thread_Reset_timeslice( void ); - -/** * This routine is invoked as part of processing each clock tick. * It is responsible for determining if the current thread allows * timeslicing and, if so, when its timeslice expires. diff --git a/cpukit/score/src/threadresettimeslice.c b/cpukit/score/src/threadresettimeslice.c deleted file mode 100644 index 29a42e7eec..0000000000 --- a/cpukit/score/src/threadresettimeslice.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Thread Handler - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. - * - * $Id$ - */ - -#if HAVE_CONFIG_H -#include "config.h" -#endif - -#include <rtems/system.h> -#include <rtems/score/apiext.h> -#include <rtems/score/context.h> -#include <rtems/score/interr.h> -#include <rtems/score/isr.h> -#include <rtems/score/object.h> -#include <rtems/score/priority.h> -#include <rtems/score/states.h> -#include <rtems/score/sysstate.h> -#include <rtems/score/thread.h> -#include <rtems/score/threadq.h> -#include <rtems/score/userext.h> -#include <rtems/score/wkspace.h> - -/*PAGE - * - * _Thread_Reset_timeslice - * - * This routine will remove the running thread from the ready chain - * and place it immediately at the rear of this chain and then the - * timeslice counter is reset. The heir THREAD will be updated if - * the running is also the currently the heir. - * - * Input parameters: NONE - * - * Output parameters: NONE - * - * INTERRUPT LATENCY: - * ready chain - * select heir - */ - -void _Thread_Reset_timeslice( void ) -{ - ISR_Level level; - Thread_Control *executing; - Chain_Control *ready; - - executing = _Thread_Executing; - ready = executing->ready; - _ISR_Disable( level ); - if ( _Chain_Has_only_one_node( ready ) ) { - _ISR_Enable( level ); - return; - } - _Chain_Extract_unprotected( &executing->Object.Node ); - _Chain_Append_unprotected( ready, &executing->Object.Node ); - - _ISR_Flash( level ); - - if ( _Thread_Is_heir( executing ) ) - _Thread_Heir = (Thread_Control *) ready->first; - - _Context_Switch_necessary = true; - - _ISR_Enable( level ); -} diff --git a/cpukit/score/src/threadtickletimeslice.c b/cpukit/score/src/threadtickletimeslice.c index 216bfe5a4e..b05305650a 100644 --- a/cpukit/score/src/threadtickletimeslice.c +++ b/cpukit/score/src/threadtickletimeslice.c @@ -80,7 +80,16 @@ void _Thread_Tickle_timeslice( void ) case THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE: #endif if ( (int)(--executing->cpu_time_budget) <= 0 ) { - _Thread_Reset_timeslice(); + + /* + * A yield performs the ready chain mechanics needed when + * resetting a timeslice. If no other thread's are ready + * at the priority of the currently executing thread, then the + * executing thread's timeslice is reset. Otherwise, the + * currently executing thread is placed at the rear of the + * FIFO for this priority and a new heir is selected. + */ + _Thread_Yield_processor(); executing->cpu_time_budget = _Thread_Ticks_per_timeslice; } break; |