diff options
Diffstat (limited to 'cpukit/rtems')
-rw-r--r-- | cpukit/rtems/src/signalsend.c | 25 | ||||
-rw-r--r-- | cpukit/rtems/src/taskconstruct.c | 9 | ||||
-rw-r--r-- | cpukit/rtems/src/taskmode.c | 2 |
3 files changed, 18 insertions, 18 deletions
diff --git a/cpukit/rtems/src/signalsend.c b/cpukit/rtems/src/signalsend.c index 72407e2b01..6ce59f2e74 100644 --- a/cpukit/rtems/src/signalsend.c +++ b/cpukit/rtems/src/signalsend.c @@ -35,16 +35,15 @@ static void _Signal_Action_handler( ISR_lock_Context *lock_context ) { - RTEMS_API_Control *api; - ASR_Information *asr; - rtems_signal_set signal_set; - bool normal_is_preemptible; - uint32_t normal_cpu_time_budget; - Thread_CPU_budget_algorithms normal_budget_algorithm; - uint32_t normal_isr_level; - uint32_t before_call_isr_level; - bool after_call_is_preemptible; - bool after_call_asr_is_enabled; + RTEMS_API_Control *api; + ASR_Information *asr; + rtems_signal_set signal_set; + bool normal_is_preemptible; + Thread_CPU_budget_control normal_cpu_budget; + uint32_t normal_isr_level; + uint32_t before_call_isr_level; + bool after_call_is_preemptible; + bool after_call_asr_is_enabled; (void) action; @@ -69,8 +68,7 @@ static void _Signal_Action_handler( _Assert( asr->is_enabled ); normal_is_preemptible = executing->is_preemptible; - normal_cpu_time_budget = executing->cpu_time_budget; - normal_budget_algorithm = executing->budget_algorithm; + normal_cpu_budget = executing->CPU_budget; /* Set mode for ASR processing */ @@ -102,8 +100,7 @@ static void _Signal_Action_handler( _Thread_State_acquire( executing, lock_context ); - executing->cpu_time_budget = normal_cpu_time_budget ; - executing->budget_algorithm = normal_budget_algorithm ; + executing->CPU_budget = normal_cpu_budget; after_call_is_preemptible = executing->is_preemptible; executing->is_preemptible = normal_is_preemptible; diff --git a/cpukit/rtems/src/taskconstruct.c b/cpukit/rtems/src/taskconstruct.c index 6e03440aed..05fbf32ff5 100644 --- a/cpukit/rtems/src/taskconstruct.c +++ b/cpukit/rtems/src/taskconstruct.c @@ -154,14 +154,17 @@ rtems_status_code _RTEMS_tasks_Create( attributes = _Attributes_Clear( attributes, ATTRIBUTES_NOT_SUPPORTED ); memset( &thread_config, 0, sizeof( thread_config ) ); - thread_config.budget_algorithm = _Modes_Is_timeslice( config->initial_modes ) ? - THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE - : THREAD_CPU_BUDGET_ALGORITHM_NONE, thread_config.isr_level = _Modes_Get_interrupt_level( config->initial_modes ); thread_config.name = config->name; thread_config.is_fp = _Attributes_Is_floating_point( attributes ); thread_config.is_preemptible = _Modes_Is_preempt( config->initial_modes ); + if ( _Modes_Is_timeslice( config->initial_modes ) ) { + thread_config.cpu_budget_operations = &_Thread_CPU_budget_reset_timeslice; + } else { + thread_config.cpu_budget_operations = NULL; + } + /* * Validate the RTEMS API priority and convert it to the core priority range. */ diff --git a/cpukit/rtems/src/taskmode.c b/cpukit/rtems/src/taskmode.c index 96bed470f4..3300eafa28 100644 --- a/cpukit/rtems/src/taskmode.c +++ b/cpukit/rtems/src/taskmode.c @@ -73,7 +73,7 @@ rtems_status_code rtems_task_mode( old_mode = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT; - if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE ) + if ( executing->CPU_budget.operations == NULL ) old_mode |= RTEMS_NO_TIMESLICE; else old_mode |= RTEMS_TIMESLICE; |