[PATCH 12/13] rtems: Add _Modes_Set_timeslice()

Gedare Bloom gedare at rtems.org
Thu Feb 18 17:37:59 UTC 2021


On Wed, Feb 17, 2021 at 12:31 PM Sebastian Huber
<sebastian.huber at embedded-brains.de> wrote:
>
> Update #4244.
> ---
>  cpukit/include/rtems/rtems/modesimpl.h | 15 +++++++++++++++
>  cpukit/rtems/src/taskmode.c            |  8 +-------
>  2 files changed, 16 insertions(+), 7 deletions(-)
>
> diff --git a/cpukit/include/rtems/rtems/modesimpl.h b/cpukit/include/rtems/rtems/modesimpl.h
> index 5677c7f13d..f6711b4c2d 100644
> --- a/cpukit/include/rtems/rtems/modesimpl.h
> +++ b/cpukit/include/rtems/rtems/modesimpl.h
> @@ -20,6 +20,8 @@
>
>  #include <rtems/rtems/modes.h>
>  #include <rtems/score/isrlevel.h>
> +#include <rtems/score/thread.h>
> +#include <rtems/config.h>
>
>  #ifdef __cplusplus
>  extern "C" {
> @@ -99,6 +101,19 @@ RTEMS_INLINE_ROUTINE void _Modes_Set_interrupt_level (
>    _ISR_Set_level( _Modes_Get_interrupt_level( mode_set ) );
>  }
>
> +RTEMS_INLINE_ROUTINE void _Modes_Set_timeslice(
I don't really like the name. It implies we want to set timeslicing true.

_Modes_Update_timeslice() may be better?

I just want to avoid that Get/Set implication.

> +  Thread_Control *executing,
> +  rtems_mode      mode_set
> +)
> +{
> +  if ( _Modes_Is_timeslice( mode_set ) ) {
> +    executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;
> +    executing->cpu_time_budget = rtems_configuration_get_ticks_per_timeslice();
> +  } else {
> +    executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;
> +  }
> +}
> +
>  #ifdef __cplusplus
>  }
>  #endif
> diff --git a/cpukit/rtems/src/taskmode.c b/cpukit/rtems/src/taskmode.c
> index 24905368c3..197f5e1556 100644
> --- a/cpukit/rtems/src/taskmode.c
> +++ b/cpukit/rtems/src/taskmode.c
> @@ -26,7 +26,6 @@
>  #include <rtems/score/schedulerimpl.h>
>  #include <rtems/score/smpimpl.h>
>  #include <rtems/score/threadimpl.h>
> -#include <rtems/config.h>
>
>  rtems_status_code rtems_task_mode(
>    rtems_mode  mode_set,
> @@ -104,12 +103,7 @@ rtems_status_code rtems_task_mode(
>    }
>
>    if ( mask & RTEMS_TIMESLICE_MASK ) {
> -    if ( _Modes_Is_timeslice(mode_set) ) {
> -      executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;
> -      executing->cpu_time_budget =
> -        rtems_configuration_get_ticks_per_timeslice();
> -    } else
> -      executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;
> +    _Modes_Set_timeslice( executing, mode_set );

Like here, I would assume this is going to set the timeslice/budget.
It is just a little unclear.

>    }
>
>    /*
> --
> 2.26.2
>
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel


More information about the devel mailing list