summaryrefslogtreecommitdiffstats
path: root/c/src
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1996-06-05 21:12:06 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1996-06-05 21:12:06 +0000
commit7aa4671d9113600cb40f53ea8aa67216eba81d9a (patch)
tree5e64ec8812c6d61921e989d1db991754ca2d9667 /c/src
parentfixed spacing (diff)
downloadrtems-7aa4671d9113600cb40f53ea8aa67216eba81d9a.tar.bz2
added cpu_time_budget field to Thread_Control and removed the global variable
_Thread_Ticks_remaining_in_timeslice.
Diffstat (limited to 'c/src')
-rw-r--r--c/src/exec/score/headers/thread.h4
-rw-r--r--c/src/exec/score/include/rtems/score/thread.h4
-rw-r--r--c/src/exec/score/src/thread.c7
-rw-r--r--c/src/tests/sptests/spsize/size.c1
4 files changed, 7 insertions, 9 deletions
diff --git a/c/src/exec/score/headers/thread.h b/c/src/exec/score/headers/thread.h
index a0fa5059be..b6332d6a74 100644
--- a/c/src/exec/score/headers/thread.h
+++ b/c/src/exec/score/headers/thread.h
@@ -150,6 +150,7 @@ typedef struct {
/****************** end of common block ********************/
boolean is_global;
boolean do_post_task_switch_extension;
+ unsigned32 cpu_time_budget;
Chain_Control *ready;
Priority_Information Priority_map;
Thread_Start_information Start;
@@ -210,10 +211,9 @@ SCORE_EXTERN unsigned32 _Thread_Dispatch_disable_level;
SCORE_EXTERN unsigned32 _Thread_Maximum_extensions;
/*
- * The following data items are used to manage timeslicing.
+ * The following is used to manage the length of a timeslice quantum.
*/
-SCORE_EXTERN unsigned32 _Thread_Ticks_remaining_in_timeslice;
SCORE_EXTERN unsigned32 _Thread_Ticks_per_timeslice;
/*
diff --git a/c/src/exec/score/include/rtems/score/thread.h b/c/src/exec/score/include/rtems/score/thread.h
index a0fa5059be..b6332d6a74 100644
--- a/c/src/exec/score/include/rtems/score/thread.h
+++ b/c/src/exec/score/include/rtems/score/thread.h
@@ -150,6 +150,7 @@ typedef struct {
/****************** end of common block ********************/
boolean is_global;
boolean do_post_task_switch_extension;
+ unsigned32 cpu_time_budget;
Chain_Control *ready;
Priority_Information Priority_map;
Thread_Start_information Start;
@@ -210,10 +211,9 @@ SCORE_EXTERN unsigned32 _Thread_Dispatch_disable_level;
SCORE_EXTERN unsigned32 _Thread_Maximum_extensions;
/*
- * The following data items are used to manage timeslicing.
+ * The following is used to manage the length of a timeslice quantum.
*/
-SCORE_EXTERN unsigned32 _Thread_Ticks_remaining_in_timeslice;
SCORE_EXTERN unsigned32 _Thread_Ticks_per_timeslice;
/*
diff --git a/c/src/exec/score/src/thread.c b/c/src/exec/score/src/thread.c
index 69701ac1d1..0d0d5cd43b 100644
--- a/c/src/exec/score/src/thread.c
+++ b/c/src/exec/score/src/thread.c
@@ -70,7 +70,6 @@ void _Thread_Handler_initialization(
_Thread_Maximum_extensions = maximum_extensions;
- _Thread_Ticks_remaining_in_timeslice = ticks_per_timeslice;
_Thread_Ticks_per_timeslice = ticks_per_timeslice;
_Thread_Ready_chain = _Workspace_Allocate_or_fatal_error(
@@ -244,7 +243,7 @@ void _Thread_Dispatch( void )
_User_extensions_Thread_switch( executing, heir );
- _Thread_Ticks_remaining_in_timeslice = _Thread_Ticks_per_timeslice;
+ heir->cpu_time_budget = _Thread_Ticks_per_timeslice;
/*
* If the CPU has hardware floating point, then we must address saving
@@ -874,8 +873,8 @@ void _Thread_Reset_timeslice( void )
ready = executing->ready;
_ISR_Disable( level );
if ( _Chain_Has_only_one_node( ready ) ) {
- _Thread_Ticks_remaining_in_timeslice = _Thread_Ticks_per_timeslice;
_ISR_Enable( level );
+ executing->cpu_time_budget = _Thread_Ticks_per_timeslice;
return;
}
_Chain_Extract_unprotected( &executing->Object.Node );
@@ -911,7 +910,7 @@ void _Thread_Tickle_timeslice( void )
!_States_Is_ready( _Thread_Executing->current_state ) )
return;
- if ( --_Thread_Ticks_remaining_in_timeslice == 0 ) {
+ if ( --_Thread_Executing->cpu_time_budget == 0 ) {
_Thread_Reset_timeslice();
}
}
diff --git a/c/src/tests/sptests/spsize/size.c b/c/src/tests/sptests/spsize/size.c
index 907cbb7927..b74e0c3c31 100644
--- a/c/src/tests/sptests/spsize/size.c
+++ b/c/src/tests/sptests/spsize/size.c
@@ -310,7 +310,6 @@ uninitialized =
/*thread.h*/ (sizeof _Thread_BSP_context) +
(sizeof _Thread_Dispatch_disable_level) +
(sizeof _Thread_Maximum_extensions) +
- (sizeof _Thread_Ticks_remaining_in_timeslice) +
(sizeof _Thread_Ticks_per_timeslice) +
(sizeof _Thread_Ready_chain) +
(sizeof _Thread_Executing) +