summaryrefslogtreecommitdiffstats
path: root/cpukit/include
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2020-04-09 15:17:46 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2020-08-31 17:30:17 +0200
commitd8172209b3f1288761ba410f52b89adeb56394fe (patch)
treeaff73c4b9cc562a3307231749d449fd439c83897 /cpukit/include
parentscore: Use _Freechain_Push() (diff)
downloadrtems-d8172209b3f1288761ba410f52b89adeb56394fe.tar.bz2
score: Add _Stack_Allocator_do_initialize()
Do the stack allocator initialization and sanity check only if a user-provided stack allocator was configured. This avoids a dependency of _Thread_Handler_initialization() on the stack allocator. Update #3959.
Diffstat (limited to 'cpukit/include')
-rw-r--r--cpukit/include/rtems/confdefs/wkspace.h6
-rw-r--r--cpukit/include/rtems/score/stack.h7
-rw-r--r--cpukit/include/rtems/sysinit.h1
3 files changed, 14 insertions, 0 deletions
diff --git a/cpukit/include/rtems/confdefs/wkspace.h b/cpukit/include/rtems/confdefs/wkspace.h
index 484dde20ea..de476dbf82 100644
--- a/cpukit/include/rtems/confdefs/wkspace.h
+++ b/cpukit/include/rtems/confdefs/wkspace.h
@@ -150,6 +150,12 @@ 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
+ );
#elif defined(CONFIGURE_TASK_STACK_ALLOCATOR) \
|| defined(CONFIGURE_TASK_STACK_DEALLOCATOR)
#error "CONFIGURE_TASK_STACK_ALLOCATOR and CONFIGURE_TASK_STACK_DEALLOCATOR must be both defined or both undefined"
diff --git a/cpukit/include/rtems/score/stack.h b/cpukit/include/rtems/score/stack.h
index df1df74867..e869a04db5 100644
--- a/cpukit/include/rtems/score/stack.h
+++ b/cpukit/include/rtems/score/stack.h
@@ -123,6 +123,13 @@ extern const Stack_Allocator_allocate _Stack_Allocator_allocate;
*/
extern const Stack_Allocator_free _Stack_Allocator_free;
+/**
+ * @brief Do the stack allocator initialization during system initialize.
+ *
+ * This function is used to initialize application provided stack allocators.
+ */
+void _Stack_Allocator_do_initialize( void );
+
/** @} */
#ifdef __cplusplus
diff --git a/cpukit/include/rtems/sysinit.h b/cpukit/include/rtems/sysinit.h
index 245da74f2c..a28e44817a 100644
--- a/cpukit/include/rtems/sysinit.h
+++ b/cpukit/include/rtems/sysinit.h
@@ -41,6 +41,7 @@ extern "C" {
#define RTEMS_SYSINIT_INITIAL_EXTENSIONS 000500
#define RTEMS_SYSINIT_MP_EARLY 000600
#define RTEMS_SYSINIT_DATA_STRUCTURES 000700
+#define RTEMS_SYSINIT_STACK_ALLOCATOR 000780
#define RTEMS_SYSINIT_MP 000800
#define RTEMS_SYSINIT_USER_EXTENSIONS 000900
#define RTEMS_SYSINIT_CLASSIC_TASKS 000a00