[PATCH v2 2/2] config: Initialize task stack allocator on demand

Gedare Bloom gedare at rtems.org
Thu Nov 19 18:18:32 UTC 2020


On Thu, Nov 19, 2020 at 9:42 AM Sebastian Huber
<sebastian.huber at embedded-brains.de> wrote:
>
> Register a custom task stack allocator initialization handler only if
> necessary.
> ---
>  cpukit/include/rtems/confdefs/wkspace.h | 19 +++++++++++--------
>  cpukit/score/src/stackallocatorinit.c   |  5 +----
>  2 files changed, 12 insertions(+), 12 deletions(-)
>
> diff --git a/cpukit/include/rtems/confdefs/wkspace.h b/cpukit/include/rtems/confdefs/wkspace.h
> index 81d172815e..803d8bdc10 100644
> --- a/cpukit/include/rtems/confdefs/wkspace.h
> +++ b/cpukit/include/rtems/confdefs/wkspace.h
> @@ -150,10 +150,19 @@ const uintptr_t _Stack_Space_size = _CONFIGURE_STACK_SPACE_SIZE;
>    #endif
>
>    #ifdef CONFIGURE_TASK_STACK_ALLOCATOR_INIT
> +    RTEMS_STATIC_ASSERT(
> +      CONFIGURE_TASK_STACK_ALLOCATOR_INIT != NULL,
> +      CONFIGURE_TASK_STACK_ALLOCATOR_INIT_MUST_NOT_BE_NULL
> +    );
> +
>      const Stack_Allocator_initialize _Stack_Allocator_initialize =
>        CONFIGURE_TASK_STACK_ALLOCATOR_INIT;
> -  #else
> -    const Stack_Allocator_initialize _Stack_Allocator_initialize = NULL;
> +
> +    RTEMS_SYSINIT_ITEM(
> +      _Stack_Allocator_do_initialize,
> +      RTEMS_SYSINIT_DIRTY_MEMORY,
> +      RTEMS_SYSINIT_ORDER_MIDDLE
> +    );
>    #endif
>
>    RTEMS_STATIC_ASSERT(
> @@ -172,12 +181,6 @@ const uintptr_t _Stack_Space_size = _CONFIGURE_STACK_SPACE_SIZE;
>    const Stack_Allocator_free _Stack_Allocator_free =
>      CONFIGURE_TASK_STACK_DEALLOCATOR;
>
> -  RTEMS_SYSINIT_ITEM(
> -    _Stack_Allocator_do_initialize,
> -    RTEMS_SYSINIT_DIRTY_MEMORY,
> -    RTEMS_SYSINIT_ORDER_MIDDLE
> -  );
> -
>    #pragma GCC diagnostic pop
>  #elif defined(CONFIGURE_TASK_STACK_ALLOCATOR) \
>    || defined(CONFIGURE_TASK_STACK_DEALLOCATOR)
> diff --git a/cpukit/score/src/stackallocatorinit.c b/cpukit/score/src/stackallocatorinit.c
> index 412e3142b3..31e239bd46 100644
> --- a/cpukit/score/src/stackallocatorinit.c
> +++ b/cpukit/score/src/stackallocatorinit.c
> @@ -45,8 +45,5 @@ void _Stack_Allocator_do_initialize( void )
>    rtems_stack_allocate_init_hook init_hook;
>
>    init_hook = rtems_configuration_get_stack_allocate_init_hook();
> -
> -  if ( init_hook  != NULL ) {
this could be made an assert, but anyway seems ok

> -    (*init_hook )( rtems_configuration_get_stack_space_size() );
> -  }
> +  ( *init_hook )( rtems_configuration_get_stack_space_size() );
>  }
> --
> 2.26.2
>
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel


More information about the devel mailing list