From 0a4982a80e73feb69f8c8f7e759d3f7c64b3fbff Mon Sep 17 00:00:00 2001 From: Abdelatif Guettouche Date: Fri, 25 Jun 2021 15:07:23 +0100 Subject: [PATCH] Introduce ARCH_HAVE_EXTRA_HEAPS, this config is going to be used for chips that have multiple separate heaps. For now it's used to enable APIs to initialize the different heaps during the start sequence but can be extended for other purposes that manage those heaps. Signed-off-by: Abdelatif Guettouche --- arch/Kconfig | 14 +++++++++++--- include/nuttx/arch.h | 12 ++++++------ sched/init/nx_start.c | 6 ++++-- 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/arch/Kconfig b/arch/Kconfig index 5b1179127d..7d71aba22c 100644 --- a/arch/Kconfig +++ b/arch/Kconfig @@ -259,9 +259,17 @@ config ARCH_NEED_ADDRENV_MAPPING bool default n -config ARCH_HAVE_TEXT_HEAP - bool "Special memory region for dynamic code loading" +config ARCH_HAVE_EXTRA_HEAPS + bool default n + ---help--- + Special memory regions used as separate heaps + +config ARCH_HAVE_TEXT_HEAP + bool + default n + ---help--- + Special memory region for dynamic code loading config ARCH_HAVE_MULTICPU bool @@ -372,7 +380,7 @@ config ARCH_USE_MPU selection will always be forced. config ARCH_USE_TEXT_HEAP - bool "Enable separate text heap for dynamic code loading" + bool "Enable separate text allocation for dynamic code loading" default n depends on ARCH_HAVE_TEXT_HEAP ---help--- diff --git a/include/nuttx/arch.h b/include/nuttx/arch.h index 391eb8c994..517ec3ff8d 100644 --- a/include/nuttx/arch.h +++ b/include/nuttx/arch.h @@ -754,22 +754,22 @@ uintptr_t pgalloc(uintptr_t brkaddr, unsigned int npages); #endif /**************************************************************************** - * Name: up_textheap_init + * Name: up_extraheaps_init * * Description: - * Initialize the text heap. + * Initialize any extra heap. * ****************************************************************************/ -#if defined(CONFIG_ARCH_USE_TEXT_HEAP) -void up_textheap_init(void); +#if defined(CONFIG_ARCH_HAVE_EXTRA_HEAPS) +void up_extraheaps_init(void); #endif /**************************************************************************** * Name: up_textheap_memalign * * Description: - * Allocate memory from the text heap with the specified alignment. + * Allocate memory for text sections with the specified alignment. * ****************************************************************************/ @@ -781,7 +781,7 @@ FAR void *up_textheap_memalign(size_t align, size_t size); * Name: up_textheap_free * * Description: - * Free memory from the text heap. + * Free memory allocated for text sections. * ****************************************************************************/ diff --git a/sched/init/nx_start.c b/sched/init/nx_start.c index d6b86f4f98..6361695fbf 100644 --- a/sched/init/nx_start.c +++ b/sched/init/nx_start.c @@ -572,8 +572,10 @@ void nx_start(void) } #endif -#ifdef CONFIG_ARCH_USE_TEXT_HEAP - up_textheap_init(); +#ifdef CONFIG_ARCH_HAVE_EXTRA_HEAPS + /* Initialize any extra heap. */ + + up_extraheaps_init(); #endif #ifdef CONFIG_MM_IOB