[rtems commit] config: Initialize task stack allocator on demand

Sebastian Huber sebh at rtems.org
Fri Nov 20 06:53:10 UTC 2020


Module:    rtems
Branch:    master
Commit:    298b5ef16263149b524a05ecc691202484e318db
Changeset: http://git.rtems.org/rtems/commit/?id=298b5ef16263149b524a05ecc691202484e318db

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Thu Nov 19 08:40:25 2020 +0100

config: Initialize task stack allocator on demand

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 81d1728..803d8bd 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 412e314..31e239b 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() );
 }



More information about the vc mailing list