diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 1996-06-05 21:12:06 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 1996-06-05 21:12:06 +0000 |
commit | 7aa4671d9113600cb40f53ea8aa67216eba81d9a (patch) | |
tree | 5e64ec8812c6d61921e989d1db991754ca2d9667 | |
parent | fixed spacing (diff) | |
download | rtems-7aa4671d9113600cb40f53ea8aa67216eba81d9a.tar.bz2 |
added cpu_time_budget field to Thread_Control and removed the global variable
_Thread_Ticks_remaining_in_timeslice.
-rw-r--r-- | c/src/exec/score/headers/thread.h | 4 | ||||
-rw-r--r-- | c/src/exec/score/include/rtems/score/thread.h | 4 | ||||
-rw-r--r-- | c/src/exec/score/src/thread.c | 7 | ||||
-rw-r--r-- | c/src/tests/sptests/spsize/size.c | 1 | ||||
-rw-r--r-- | cpukit/score/include/rtems/score/thread.h | 4 | ||||
-rw-r--r-- | cpukit/score/src/thread.c | 7 | ||||
-rw-r--r-- | testsuites/sptests/spsize/size.c | 1 |
7 files changed, 12 insertions, 16 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) + diff --git a/cpukit/score/include/rtems/score/thread.h b/cpukit/score/include/rtems/score/thread.h index a0fa5059be..b6332d6a74 100644 --- a/cpukit/score/include/rtems/score/thread.h +++ b/cpukit/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/cpukit/score/src/thread.c b/cpukit/score/src/thread.c index 69701ac1d1..0d0d5cd43b 100644 --- a/cpukit/score/src/thread.c +++ b/cpukit/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/testsuites/sptests/spsize/size.c b/testsuites/sptests/spsize/size.c index 907cbb7927..b74e0c3c31 100644 --- a/testsuites/sptests/spsize/size.c +++ b/testsuites/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) + |