summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2020-11-19 08:40:25 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2020-11-19 17:41:26 +0100
commit298b5ef16263149b524a05ecc691202484e318db (patch)
treef43c6e26eb918ca5165226c2982b42720e1ced66
parentc5af8aa0704d52e1d9757b863ed2831282642a56 (diff)
downloadrtems-298b5ef16263149b524a05ecc691202484e318db.tar.bz2
config: Initialize task stack allocator on demand
Register a custom task stack allocator initialization handler only if necessary.
-rw-r--r--cpukit/include/rtems/confdefs/wkspace.h19
-rw-r--r--cpukit/score/src/stackallocatorinit.c5
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 ) {
- (*init_hook )( rtems_configuration_get_stack_space_size() );
- }
+ ( *init_hook )( rtems_configuration_get_stack_space_size() );
}