summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2010-06-24 21:27:30 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2010-06-24 21:27:30 +0000
commit8bef4ccfb07a48ece38301b9740875f5cd9e0cad (patch)
tree29927169292cac392a56fbb9af1ecd5e693d25d4
parent2010-06-24 Bharath Suri <bharath.s.jois@gmail.com> (diff)
downloadrtems-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/ChangeLog9
-rw-r--r--cpukit/score/Makefile.am6
-rw-r--r--cpukit/score/include/rtems/score/thread.h10
-rw-r--r--cpukit/score/src/threadresettimeslice.c75
-rw-r--r--cpukit/score/src/threadtickletimeslice.c11
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;