This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git


The following commit(s) were added to refs/heads/master by this push:
     new 5db4278173c protect: move us_heap to userspace_data_s
5db4278173c is described below

commit 5db4278173c7b6293a6833301c50af4a824a24ea
Author: hujun5 <[email protected]>
AuthorDate: Fri Sep 5 16:26:05 2025 +0800

    protect: move us_heap to userspace_data_s
    
    Refactor heap pointer storage by moving us_heap field from userspace_s
    to the nested userspace_data_s structure, enabling future extensibility
    of user-space data without modifying the core userspace_s interface across
    all board-specific implementations.
    
    Signed-off-by: hujun5 <[email protected]>
---
 arch/ceva/include/arch.h                                    |  2 +-
 arch/ceva/src/common/ceva_heap.c                            |  2 +-
 boards/arm/at32/at32f437-mini/kernel/at32_userspace.c       | 13 +++++++++++--
 boards/arm/imxrt/arcx-socket-grid/kernel/imxrt_userspace.c  | 13 +++++++++++--
 boards/arm/imxrt/imxrt1050-evk/kernel/imxrt_userspace.c     | 13 +++++++++++--
 boards/arm/imxrt/imxrt1060-evk/kernel/imxrt_userspace.c     | 13 +++++++++++--
 boards/arm/imxrt/imxrt1064-evk/kernel/imxrt_userspace.c     | 13 +++++++++++--
 boards/arm/imxrt/imxrt1170-evk/kernel/imxrt_userspace.c     | 13 +++++++++++--
 boards/arm/imxrt/teensy-4.x/kernel/imxrt_userspace.c        | 13 +++++++++++--
 .../arm/lc823450/lc823450-xgevk/kernel/lc823450_userspace.c | 13 +++++++++++--
 .../lpc17xx_40xx/lpc4088-devkit/kernel/lpc17_40_userspace.c | 13 +++++++++++--
 .../lpc4088-quickstart/kernel/lpc17_40_userspace.c          | 13 +++++++++++--
 .../arm/lpc17xx_40xx/open1788/kernel/lpc17_40_userspace.c   | 13 +++++++++++--
 .../arm/lpc17xx_40xx/pnev5180b/kernel/lpc17_40_userspace.c  | 13 +++++++++++--
 boards/arm/lpc43xx/bambino-200e/kernel/lpc43_userspace.c    | 13 +++++++++++--
 boards/arm/mps/mps2-an500/kernel/mps_userspace.c            | 13 +++++++++++--
 boards/arm/mps/mps3-an547/kernel/mps_userspace.c            | 13 +++++++++++--
 boards/arm/qemu/qemu-armv7r/kernel/qemu_userspace.c         | 13 +++++++++++--
 boards/arm/s32k3xx/mr-canhubk3/kernel/s32k3xx_userspace.c   | 13 +++++++++++--
 boards/arm/sam34/sam3u-ek/kernel/sam_userspace.c            | 13 +++++++++++--
 boards/arm/samv7/same70-qmtech/kernel/sam_userspace.c       | 13 +++++++++++--
 boards/arm/samv7/same70-xplained/kernel/sam_userspace.c     | 13 +++++++++++--
 boards/arm/samv7/samv71-xult/kernel/sam_userspace.c         | 13 +++++++++++--
 boards/arm/stm32/clicker2-stm32/kernel/stm32_userspace.c    | 13 +++++++++++--
 boards/arm/stm32/mikroe-stm32f4/kernel/stm32_userspace.c    | 13 +++++++++++--
 boards/arm/stm32/olimex-stm32-p407/kernel/stm32_userspace.c | 13 +++++++++++--
 boards/arm/stm32/omnibusf4/kernel/stm32_userspace.c         | 13 +++++++++++--
 boards/arm/stm32/stm3240g-eval/kernel/stm32_userspace.c     | 13 +++++++++++--
 boards/arm/stm32/stm32f4discovery/kernel/stm32_userspace.c  | 13 +++++++++++--
 .../arm/stm32f7/stm32f746g-disco/kernel/stm32_userspace.c   | 13 +++++++++++--
 .../arm/stm32f7/stm32f769i-disco/kernel/stm32_userspace.c   | 13 +++++++++++--
 .../stm32f7/stm32f777zit6-meadow/kernel/stm32_userspace.c   | 13 +++++++++++--
 boards/arm/stm32h7/nucleo-h743zi/kernel/stm32_userspace.c   | 13 +++++++++++--
 .../arm/stm32h7/stm32h747i-disco/kernel/stm32_userspace.c   | 13 +++++++++++--
 .../stm32l4/stm32l476vg-disco/kernel/stm32l4_userspace.c    | 13 +++++++++++--
 .../stm32l4/stm32l4r9ai-disco/kernel/stm32l4_userspace.c    | 13 +++++++++++--
 boards/arm/tiva/lm3s6965-ek/kernel/lm_userspace.c           | 13 +++++++++++--
 boards/arm64/fvp-v8r/fvp-armv8r/kernel/fvp_userspace.c      | 13 +++++++++++--
 boards/risc-v/c906/smartl-c906/kernel/c906_userspace.c      | 13 +++++++++++--
 .../risc-v/esp32c3-legacy/common/kernel/esp32c3_userspace.c | 13 +++++++++++--
 boards/risc-v/k210/maix-bit/kernel/k210_userspace.c         | 13 +++++++++++--
 boards/risc-v/k230/canmv230/kernel/k230_userspace.c         | 13 +++++++++++--
 boards/risc-v/mpfs/common/kernel/mpfs_userspace.c           | 13 +++++++++++--
 boards/risc-v/qemu-rv/rv-virt/kernel/rv_virt_userspace.c    | 13 +++++++++++--
 boards/xtensa/esp32/common/kernel/esp32_userspace.c         | 13 +++++++++++--
 boards/xtensa/esp32s3/common/kernel/esp32s3_userspace.c     | 13 +++++++++++--
 include/nuttx/mm/mm.h                                       |  2 +-
 include/nuttx/userspace.h                                   |  9 +++++++--
 48 files changed, 494 insertions(+), 93 deletions(-)

diff --git a/arch/ceva/include/arch.h b/arch/ceva/include/arch.h
index e157ea18a59..cad0d814b19 100644
--- a/arch/ceva/include/arch.h
+++ b/arch/ceva/include/arch.h
@@ -62,7 +62,7 @@
  * structure from the userspace interface.
  */
 
-#  define UMM_HEAP(i) ((struct mm_heap_s *const *)USERSPACE->us_heap)[i]
+#  define UMM_HEAP(i) ((struct mm_heap_s *const *)USERSPACE_HEAP)[i]
 
 #else
 /* Otherwise, the user heap data structures are in common .bss */
diff --git a/arch/ceva/src/common/ceva_heap.c b/arch/ceva/src/common/ceva_heap.c
index 6dd1d210b80..6fa51925fec 100644
--- a/arch/ceva/src/common/ceva_heap.c
+++ b/arch/ceva/src/common/ceva_heap.c
@@ -179,7 +179,7 @@ void up_allocate_heap(void **heap_start, size_t *heap_size)
 
 #ifdef CONFIG_BUILD_PROTECTED
   struct mm_heap_s *const *heap =
-    (struct mm_heap_s *const *)USERSPACE->us_heap;
+    (struct mm_heap_s *const *)USERSPACE_HEAP;
   void *const *bssend = (void *const *)USERSPACE->us_bssend;
   void *const *heapend = (void *const *)USERSPACE->us_heapend;
 
diff --git a/boards/arm/at32/at32f437-mini/kernel/at32_userspace.c 
b/boards/arm/at32/at32f437-mini/kernel/at32_userspace.c
index 501ba85fec2..38ccfa6c51e 100644
--- a/boards/arm/at32/at32f437-mini/kernel/at32_userspace.c
+++ b/boards/arm/at32/at32f437-mini/kernel/at32_userspace.c
@@ -49,6 +49,15 @@
 #  error "CONFIG_NUTTX_USERSPACE must be 0x08060000 to match memory.ld"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -76,9 +85,9 @@ const struct userspace_s userspace locate_data(".userspace") =
   .us_bssstart      = (uintptr_t)_sbss,
   .us_bssend        = (uintptr_t)_ebss,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data           = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/arm/imxrt/arcx-socket-grid/kernel/imxrt_userspace.c 
b/boards/arm/imxrt/arcx-socket-grid/kernel/imxrt_userspace.c
index 01f99c671a5..d23be6c46f7 100644
--- a/boards/arm/imxrt/arcx-socket-grid/kernel/imxrt_userspace.c
+++ b/boards/arm/imxrt/arcx-socket-grid/kernel/imxrt_userspace.c
@@ -48,6 +48,15 @@
 #  error "CONFIG_NUTTX_USERSPACE must be 0x60200000 to match user-space.ld"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -75,9 +84,9 @@ const struct userspace_s userspace locate_data(".userspace") =
   .us_bssstart      = (uintptr_t)_sbss,
   .us_bssend        = (uintptr_t)_ebss,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/arm/imxrt/imxrt1050-evk/kernel/imxrt_userspace.c 
b/boards/arm/imxrt/imxrt1050-evk/kernel/imxrt_userspace.c
index eb0371de377..c8a29cd123e 100644
--- a/boards/arm/imxrt/imxrt1050-evk/kernel/imxrt_userspace.c
+++ b/boards/arm/imxrt/imxrt1050-evk/kernel/imxrt_userspace.c
@@ -48,6 +48,15 @@
 #  error "CONFIG_NUTTX_USERSPACE must be 0x60200000 to match user-space.ld"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -75,9 +84,9 @@ const struct userspace_s userspace locate_data(".userspace") =
   .us_bssstart      = (uintptr_t)_sbss,
   .us_bssend        = (uintptr_t)_ebss,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/arm/imxrt/imxrt1060-evk/kernel/imxrt_userspace.c 
b/boards/arm/imxrt/imxrt1060-evk/kernel/imxrt_userspace.c
index 28343093a37..ab45742ddca 100644
--- a/boards/arm/imxrt/imxrt1060-evk/kernel/imxrt_userspace.c
+++ b/boards/arm/imxrt/imxrt1060-evk/kernel/imxrt_userspace.c
@@ -48,6 +48,15 @@
 #  error "CONFIG_NUTTX_USERSPACE must be 0x60200000 to match user-space.ld"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -75,9 +84,9 @@ const struct userspace_s userspace locate_data(".userspace") =
   .us_bssstart      = (uintptr_t)_sbss,
   .us_bssend        = (uintptr_t)_ebss,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/arm/imxrt/imxrt1064-evk/kernel/imxrt_userspace.c 
b/boards/arm/imxrt/imxrt1064-evk/kernel/imxrt_userspace.c
index 99962d41a63..c793802e1dd 100644
--- a/boards/arm/imxrt/imxrt1064-evk/kernel/imxrt_userspace.c
+++ b/boards/arm/imxrt/imxrt1064-evk/kernel/imxrt_userspace.c
@@ -48,6 +48,15 @@
 #  error "CONFIG_NUTTX_USERSPACE must be 0x60200000 to match user-space.ld"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -75,9 +84,9 @@ const struct userspace_s userspace locate_data(".userspace") =
   .us_bssstart      = (uintptr_t)_sbss,
   .us_bssend        = (uintptr_t)_ebss,
 
-  /* Memory manager heap structure */
+  /* User share memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/arm/imxrt/imxrt1170-evk/kernel/imxrt_userspace.c 
b/boards/arm/imxrt/imxrt1170-evk/kernel/imxrt_userspace.c
index 7b1c51682db..3f9332c4112 100644
--- a/boards/arm/imxrt/imxrt1170-evk/kernel/imxrt_userspace.c
+++ b/boards/arm/imxrt/imxrt1170-evk/kernel/imxrt_userspace.c
@@ -48,6 +48,15 @@
 #  error "CONFIG_NUTTX_USERSPACE must be 0x30200000 to match user-space.ld"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -89,9 +98,9 @@ const struct userspace_s userspace locate_data(".userspace") =
   .us_bssstart      = (uintptr_t)&_sbss,
   .us_bssend        = (uintptr_t)&_ebss,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/arm/imxrt/teensy-4.x/kernel/imxrt_userspace.c 
b/boards/arm/imxrt/teensy-4.x/kernel/imxrt_userspace.c
index a7ca1e3ad24..c0dfcded61b 100644
--- a/boards/arm/imxrt/teensy-4.x/kernel/imxrt_userspace.c
+++ b/boards/arm/imxrt/teensy-4.x/kernel/imxrt_userspace.c
@@ -48,6 +48,15 @@
 #  error "CONFIG_NUTTX_USERSPACE must be 0x60200000 to match user-space.ld"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -75,9 +84,9 @@ const struct userspace_s userspace locate_data(".userspace") =
   .us_bssstart      = (uintptr_t)_sbss,
   .us_bssend        = (uintptr_t)_ebss,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/arm/lc823450/lc823450-xgevk/kernel/lc823450_userspace.c 
b/boards/arm/lc823450/lc823450-xgevk/kernel/lc823450_userspace.c
index f192bae6516..edc11fa73f4 100644
--- a/boards/arm/lc823450/lc823450-xgevk/kernel/lc823450_userspace.c
+++ b/boards/arm/lc823450/lc823450-xgevk/kernel/lc823450_userspace.c
@@ -49,6 +49,15 @@
 #  error "CONFIG_NUTTX_USERSPACE must be 0x05020000 to match memory.ld"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -76,9 +85,9 @@ const struct userspace_s userspace locate_data(".userspace") =
   .us_bssstart      = (uintptr_t)_sbss,
   .us_bssend        = (uintptr_t)_ebss,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/arm/lpc17xx_40xx/lpc4088-devkit/kernel/lpc17_40_userspace.c 
b/boards/arm/lpc17xx_40xx/lpc4088-devkit/kernel/lpc17_40_userspace.c
index f84fcf08fde..04c606fd4da 100644
--- a/boards/arm/lpc17xx_40xx/lpc4088-devkit/kernel/lpc17_40_userspace.c
+++ b/boards/arm/lpc17xx_40xx/lpc4088-devkit/kernel/lpc17_40_userspace.c
@@ -48,6 +48,15 @@
 #  error "CONFIG_NUTTX_USERSPACE must be 0x00040000 to match memory.ld"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -75,9 +84,9 @@ const struct userspace_s userspace locate_data(".userspace") =
   .us_bssstart      = (uintptr_t)_sbss,
   .us_bssend        = (uintptr_t)_ebss,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git 
a/boards/arm/lpc17xx_40xx/lpc4088-quickstart/kernel/lpc17_40_userspace.c 
b/boards/arm/lpc17xx_40xx/lpc4088-quickstart/kernel/lpc17_40_userspace.c
index 4579e97513e..9b37a304533 100644
--- a/boards/arm/lpc17xx_40xx/lpc4088-quickstart/kernel/lpc17_40_userspace.c
+++ b/boards/arm/lpc17xx_40xx/lpc4088-quickstart/kernel/lpc17_40_userspace.c
@@ -48,6 +48,15 @@
 #  error "CONFIG_NUTTX_USERSPACE must be 0x00040000 to match memory.ld"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -75,9 +84,9 @@ const struct userspace_s userspace locate_data(".userspace") =
   .us_bssstart      = (uintptr_t)_sbss,
   .us_bssend        = (uintptr_t)_ebss,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/arm/lpc17xx_40xx/open1788/kernel/lpc17_40_userspace.c 
b/boards/arm/lpc17xx_40xx/open1788/kernel/lpc17_40_userspace.c
index c268f722c3e..054faef3b33 100644
--- a/boards/arm/lpc17xx_40xx/open1788/kernel/lpc17_40_userspace.c
+++ b/boards/arm/lpc17xx_40xx/open1788/kernel/lpc17_40_userspace.c
@@ -48,6 +48,15 @@
 #  error "CONFIG_NUTTX_USERSPACE must be 0x00040000 to match memory.ld"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -75,9 +84,9 @@ const struct userspace_s userspace locate_data(".userspace") =
   .us_bssstart      = (uintptr_t)_sbss,
   .us_bssend        = (uintptr_t)_ebss,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/arm/lpc17xx_40xx/pnev5180b/kernel/lpc17_40_userspace.c 
b/boards/arm/lpc17xx_40xx/pnev5180b/kernel/lpc17_40_userspace.c
index d77915de978..6df2807a7b3 100644
--- a/boards/arm/lpc17xx_40xx/pnev5180b/kernel/lpc17_40_userspace.c
+++ b/boards/arm/lpc17xx_40xx/pnev5180b/kernel/lpc17_40_userspace.c
@@ -48,6 +48,15 @@
 #  error "CONFIG_NUTTX_USERSPACE must be 0x00020000 to match memory.ld"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -75,9 +84,9 @@ const struct userspace_s userspace locate_data(".userspace") =
   .us_bssstart      = (uintptr_t)_sbss,
   .us_bssend        = (uintptr_t)_ebss,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/arm/lpc43xx/bambino-200e/kernel/lpc43_userspace.c 
b/boards/arm/lpc43xx/bambino-200e/kernel/lpc43_userspace.c
index af8acfe4c3a..c2f13cf6c42 100644
--- a/boards/arm/lpc43xx/bambino-200e/kernel/lpc43_userspace.c
+++ b/boards/arm/lpc43xx/bambino-200e/kernel/lpc43_userspace.c
@@ -49,6 +49,15 @@
 #  error "CONFIG_NUTTX_USERSPACE must be 0x14040000 to match memory.ld"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -76,9 +85,9 @@ const struct userspace_s userspace locate_data(".userspace") =
   .us_bssstart      = (uintptr_t)_sbss,
   .us_bssend        = (uintptr_t)_ebss,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/arm/mps/mps2-an500/kernel/mps_userspace.c 
b/boards/arm/mps/mps2-an500/kernel/mps_userspace.c
index 08df49f1e94..9a56745fba1 100644
--- a/boards/arm/mps/mps2-an500/kernel/mps_userspace.c
+++ b/boards/arm/mps/mps2-an500/kernel/mps_userspace.c
@@ -48,6 +48,15 @@
 #  error "CONFIG_NUTTX_USERSPACE must be 0x20000000 to match user-space.ld"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -91,9 +100,9 @@ const struct userspace_s userspace locate_data(".userspace") 
=
   .us_bssstart      = (uintptr_t)&_sbss,
   .us_bssend        = (uintptr_t)&_ebss,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/arm/mps/mps3-an547/kernel/mps_userspace.c 
b/boards/arm/mps/mps3-an547/kernel/mps_userspace.c
index 7e0f8d6a8d3..fa22607eb97 100644
--- a/boards/arm/mps/mps3-an547/kernel/mps_userspace.c
+++ b/boards/arm/mps/mps3-an547/kernel/mps_userspace.c
@@ -48,6 +48,15 @@
 #  error "CONFIG_NUTTX_USERSPACE must be 0x20000000 to match user-space.ld"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -91,9 +100,9 @@ const struct userspace_s userspace locate_data(".userspace") 
=
   .us_bssstart      = (uintptr_t)&_sbss,
   .us_bssend        = (uintptr_t)&_ebss,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/arm/qemu/qemu-armv7r/kernel/qemu_userspace.c 
b/boards/arm/qemu/qemu-armv7r/kernel/qemu_userspace.c
index 71866a0a6ed..bda9bf8a94d 100644
--- a/boards/arm/qemu/qemu-armv7r/kernel/qemu_userspace.c
+++ b/boards/arm/qemu/qemu-armv7r/kernel/qemu_userspace.c
@@ -45,6 +45,15 @@
 #  error "CONFIG_NUTTX_USERSPACE not defined"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -72,9 +81,9 @@ const struct userspace_s userspace locate_data(".userspace") =
   .us_bssstart      = (uintptr_t)_sbss,
   .us_bssend        = (uintptr_t)_ebss,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/arm/s32k3xx/mr-canhubk3/kernel/s32k3xx_userspace.c 
b/boards/arm/s32k3xx/mr-canhubk3/kernel/s32k3xx_userspace.c
index d3c82a5753f..275102bbfc1 100644
--- a/boards/arm/s32k3xx/mr-canhubk3/kernel/s32k3xx_userspace.c
+++ b/boards/arm/s32k3xx/mr-canhubk3/kernel/s32k3xx_userspace.c
@@ -48,6 +48,15 @@
 #  error "CONFIG_NUTTX_USERSPACE must be 0x00501000 to match user-space.ld"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -75,9 +84,9 @@ const struct userspace_s userspace locate_data(".userspace") =
   .us_bssstart      = (uintptr_t)_sbss,
   .us_bssend        = (uintptr_t)_ebss,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/arm/sam34/sam3u-ek/kernel/sam_userspace.c 
b/boards/arm/sam34/sam3u-ek/kernel/sam_userspace.c
index e6ed2350a5e..c9e537e5182 100644
--- a/boards/arm/sam34/sam3u-ek/kernel/sam_userspace.c
+++ b/boards/arm/sam34/sam3u-ek/kernel/sam_userspace.c
@@ -48,6 +48,15 @@
 #  error "CONFIG_NUTTX_USERSPACE must be 0x00090000 to match user-space.ld"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -75,9 +84,9 @@ const struct userspace_s userspace locate_data(".userspace") =
   .us_bssstart      = (uintptr_t)_sbss,
   .us_bssend        = (uintptr_t)_ebss,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/arm/samv7/same70-qmtech/kernel/sam_userspace.c 
b/boards/arm/samv7/same70-qmtech/kernel/sam_userspace.c
index f3c0cf43f20..9f19fb66f12 100644
--- a/boards/arm/samv7/same70-qmtech/kernel/sam_userspace.c
+++ b/boards/arm/samv7/same70-qmtech/kernel/sam_userspace.c
@@ -48,6 +48,15 @@
 #  error "CONFIG_NUTTX_USERSPACE must be 0x00440000 to match user-space.ld"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -75,9 +84,9 @@ const struct userspace_s userspace locate_data(".userspace") =
   .us_bssstart      = (uintptr_t)_sbss,
   .us_bssend        = (uintptr_t)_ebss,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/arm/samv7/same70-xplained/kernel/sam_userspace.c 
b/boards/arm/samv7/same70-xplained/kernel/sam_userspace.c
index f62683638b2..83b5611f051 100644
--- a/boards/arm/samv7/same70-xplained/kernel/sam_userspace.c
+++ b/boards/arm/samv7/same70-xplained/kernel/sam_userspace.c
@@ -48,6 +48,15 @@
 #  error "CONFIG_NUTTX_USERSPACE must be 0x00500000 to match user-space.ld"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -75,9 +84,9 @@ const struct userspace_s userspace locate_data(".userspace") =
   .us_bssstart      = (uintptr_t)_sbss,
   .us_bssend        = (uintptr_t)_ebss,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/arm/samv7/samv71-xult/kernel/sam_userspace.c 
b/boards/arm/samv7/samv71-xult/kernel/sam_userspace.c
index 9a2937f5e97..6bbac20ef3d 100644
--- a/boards/arm/samv7/samv71-xult/kernel/sam_userspace.c
+++ b/boards/arm/samv7/samv71-xult/kernel/sam_userspace.c
@@ -48,6 +48,15 @@
 #  error "CONFIG_NUTTX_USERSPACE must be 0x00500000 to match user-space.ld"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -75,9 +84,9 @@ const struct userspace_s userspace locate_data(".userspace") =
   .us_bssstart      = (uintptr_t)_sbss,
   .us_bssend        = (uintptr_t)_ebss,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/arm/stm32/clicker2-stm32/kernel/stm32_userspace.c 
b/boards/arm/stm32/clicker2-stm32/kernel/stm32_userspace.c
index 70621ab4105..0274e2ab465 100644
--- a/boards/arm/stm32/clicker2-stm32/kernel/stm32_userspace.c
+++ b/boards/arm/stm32/clicker2-stm32/kernel/stm32_userspace.c
@@ -49,6 +49,15 @@
 #  error "CONFIG_NUTTX_USERSPACE must be 0x08020000 to match memory.ld"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -78,9 +87,9 @@ const struct userspace_s userspace locate_data(".userspace") =
   .us_bssstart      = (uintptr_t)_sbss,
   .us_bssend        = (uintptr_t)_ebss,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/arm/stm32/mikroe-stm32f4/kernel/stm32_userspace.c 
b/boards/arm/stm32/mikroe-stm32f4/kernel/stm32_userspace.c
index 45072ca9a03..81c267d2fd5 100644
--- a/boards/arm/stm32/mikroe-stm32f4/kernel/stm32_userspace.c
+++ b/boards/arm/stm32/mikroe-stm32f4/kernel/stm32_userspace.c
@@ -48,6 +48,15 @@
 #  error "CONFIG_NUTTX_USERSPACE must be 0x08020000 to match memory.ld"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -75,9 +84,9 @@ const struct userspace_s userspace locate_data(".userspace") =
   .us_bssstart      = (uintptr_t)_sbss,
   .us_bssend        = (uintptr_t)_ebss,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/arm/stm32/olimex-stm32-p407/kernel/stm32_userspace.c 
b/boards/arm/stm32/olimex-stm32-p407/kernel/stm32_userspace.c
index fd6ced6aaa4..9741858be58 100644
--- a/boards/arm/stm32/olimex-stm32-p407/kernel/stm32_userspace.c
+++ b/boards/arm/stm32/olimex-stm32-p407/kernel/stm32_userspace.c
@@ -49,6 +49,15 @@
 #  error "CONFIG_NUTTX_USERSPACE must be 0x08020000 to match memory.ld"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -76,9 +85,9 @@ const struct userspace_s userspace locate_data(".userspace") =
   .us_bssstart      = (uintptr_t)_sbss,
   .us_bssend        = (uintptr_t)_ebss,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/arm/stm32/omnibusf4/kernel/stm32_userspace.c 
b/boards/arm/stm32/omnibusf4/kernel/stm32_userspace.c
index 27d958bebd2..4f26f3b6fa7 100644
--- a/boards/arm/stm32/omnibusf4/kernel/stm32_userspace.c
+++ b/boards/arm/stm32/omnibusf4/kernel/stm32_userspace.c
@@ -49,6 +49,15 @@
 #  error "CONFIG_NUTTX_USERSPACE must be 0x08020000 to match memory.ld"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -76,9 +85,9 @@ const struct userspace_s userspace locate_data(".userspace") =
   .us_bssstart      = (uintptr_t)_sbss,
   .us_bssend        = (uintptr_t)_ebss,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/arm/stm32/stm3240g-eval/kernel/stm32_userspace.c 
b/boards/arm/stm32/stm3240g-eval/kernel/stm32_userspace.c
index 4471c24b804..f50a59be452 100644
--- a/boards/arm/stm32/stm3240g-eval/kernel/stm32_userspace.c
+++ b/boards/arm/stm32/stm3240g-eval/kernel/stm32_userspace.c
@@ -48,6 +48,15 @@
 #  error "CONFIG_NUTTX_USERSPACE must be 0x08040000 to match memory.ld"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -75,9 +84,9 @@ const struct userspace_s userspace locate_data(".userspace") =
   .us_bssstart      = (uintptr_t)_sbss,
   .us_bssend        = (uintptr_t)_ebss,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/arm/stm32/stm32f4discovery/kernel/stm32_userspace.c 
b/boards/arm/stm32/stm32f4discovery/kernel/stm32_userspace.c
index e91c481728d..ee6b7fab075 100644
--- a/boards/arm/stm32/stm32f4discovery/kernel/stm32_userspace.c
+++ b/boards/arm/stm32/stm32f4discovery/kernel/stm32_userspace.c
@@ -49,6 +49,15 @@
 #  error "CONFIG_NUTTX_USERSPACE must be 0x08020000 to match memory.ld"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -76,9 +85,9 @@ const struct userspace_s userspace locate_data(".userspace") =
   .us_bssstart      = (uintptr_t)_sbss,
   .us_bssend        = (uintptr_t)_ebss,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/arm/stm32f7/stm32f746g-disco/kernel/stm32_userspace.c 
b/boards/arm/stm32f7/stm32f746g-disco/kernel/stm32_userspace.c
index 61a8bfbecab..d81d6dbc653 100644
--- a/boards/arm/stm32f7/stm32f746g-disco/kernel/stm32_userspace.c
+++ b/boards/arm/stm32f7/stm32f746g-disco/kernel/stm32_userspace.c
@@ -49,6 +49,15 @@
 #  error "CONFIG_NUTTX_USERSPACE must be 0x08020000 to match memory.ld"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -76,9 +85,9 @@ const struct userspace_s userspace locate_data(".userspace") =
   .us_bssstart      = (uintptr_t)_sbss,
   .us_bssend        = (uintptr_t)_ebss,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/arm/stm32f7/stm32f769i-disco/kernel/stm32_userspace.c 
b/boards/arm/stm32f7/stm32f769i-disco/kernel/stm32_userspace.c
index b7902970c82..0e5928da47f 100644
--- a/boards/arm/stm32f7/stm32f769i-disco/kernel/stm32_userspace.c
+++ b/boards/arm/stm32f7/stm32f769i-disco/kernel/stm32_userspace.c
@@ -49,6 +49,15 @@
 #  error "CONFIG_NUTTX_USERSPACE must be 0x08020000 to match memory.ld"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -76,9 +85,9 @@ const struct userspace_s userspace locate_data(".userspace") =
   .us_bssstart      = (uintptr_t)_sbss,
   .us_bssend        = (uintptr_t)_ebss,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/arm/stm32f7/stm32f777zit6-meadow/kernel/stm32_userspace.c 
b/boards/arm/stm32f7/stm32f777zit6-meadow/kernel/stm32_userspace.c
index 58882233379..bf2e7d446b5 100644
--- a/boards/arm/stm32f7/stm32f777zit6-meadow/kernel/stm32_userspace.c
+++ b/boards/arm/stm32f7/stm32f777zit6-meadow/kernel/stm32_userspace.c
@@ -49,6 +49,15 @@
 #  error "CONFIG_NUTTX_USERSPACE must be 0x08040000 to match memory.ld"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -86,9 +95,9 @@ const struct userspace_s userspace locate_data(".userspace") =
   .us_bssstart      = (uintptr_t)_sbss,
   .us_bssend        = (uintptr_t)_ebss,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/arm/stm32h7/nucleo-h743zi/kernel/stm32_userspace.c 
b/boards/arm/stm32h7/nucleo-h743zi/kernel/stm32_userspace.c
index efb0a687955..e08a2a3e793 100644
--- a/boards/arm/stm32h7/nucleo-h743zi/kernel/stm32_userspace.c
+++ b/boards/arm/stm32h7/nucleo-h743zi/kernel/stm32_userspace.c
@@ -49,6 +49,15 @@
 #  error "CONFIG_NUTTX_USERSPACE must be 0x08020000 to match memory.ld"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -76,9 +85,9 @@ const struct userspace_s userspace locate_data(".userspace") =
   .us_bssstart      = (uintptr_t)_sbss,
   .us_bssend        = (uintptr_t)_ebss,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/arm/stm32h7/stm32h747i-disco/kernel/stm32_userspace.c 
b/boards/arm/stm32h7/stm32h747i-disco/kernel/stm32_userspace.c
index 6ffbcc5c829..add2b26b43d 100644
--- a/boards/arm/stm32h7/stm32h747i-disco/kernel/stm32_userspace.c
+++ b/boards/arm/stm32h7/stm32h747i-disco/kernel/stm32_userspace.c
@@ -49,6 +49,15 @@
 #  error "CONFIG_NUTTX_USERSPACE must be 0x08020000 to match memory.ld"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -76,9 +85,9 @@ const struct userspace_s userspace locate_data(".userspace") =
   .us_bssstart      = (uintptr_t)_sbss,
   .us_bssend        = (uintptr_t)_ebss,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/arm/stm32l4/stm32l476vg-disco/kernel/stm32l4_userspace.c 
b/boards/arm/stm32l4/stm32l476vg-disco/kernel/stm32l4_userspace.c
index 3af13f684a9..dbc82d5be38 100644
--- a/boards/arm/stm32l4/stm32l476vg-disco/kernel/stm32l4_userspace.c
+++ b/boards/arm/stm32l4/stm32l476vg-disco/kernel/stm32l4_userspace.c
@@ -49,6 +49,15 @@
 #  error "CONFIG_NUTTX_USERSPACE must be 0x08020000 to match memory.ld"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -76,9 +85,9 @@ const struct userspace_s userspace locate_data(".userspace") =
   .us_bssstart      = (uintptr_t)_sbss,
   .us_bssend        = (uintptr_t)_ebss,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/arm/stm32l4/stm32l4r9ai-disco/kernel/stm32l4_userspace.c 
b/boards/arm/stm32l4/stm32l4r9ai-disco/kernel/stm32l4_userspace.c
index 8dc5ae0f632..d2622ef46f0 100644
--- a/boards/arm/stm32l4/stm32l4r9ai-disco/kernel/stm32l4_userspace.c
+++ b/boards/arm/stm32l4/stm32l4r9ai-disco/kernel/stm32l4_userspace.c
@@ -49,6 +49,15 @@
 #  error "CONFIG_NUTTX_USERSPACE must be 0x08020000 to match memory.ld"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -76,9 +85,9 @@ const struct userspace_s userspace locate_data(".userspace") =
   .us_bssstart      = (uintptr_t)_sbss,
   .us_bssend        = (uintptr_t)_ebss,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/arm/tiva/lm3s6965-ek/kernel/lm_userspace.c 
b/boards/arm/tiva/lm3s6965-ek/kernel/lm_userspace.c
index 2a0bbe87956..84cec6ba6b9 100644
--- a/boards/arm/tiva/lm3s6965-ek/kernel/lm_userspace.c
+++ b/boards/arm/tiva/lm3s6965-ek/kernel/lm_userspace.c
@@ -49,6 +49,15 @@
 #  error "CONFIG_NUTTX_USERSPACE must be 0x00020000 to match memory.ld"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -76,9 +85,9 @@ const struct userspace_s userspace locate_data(".userspace") =
   .us_bssstart      = (uintptr_t)_sbss,
   .us_bssend        = (uintptr_t)_ebss,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/arm64/fvp-v8r/fvp-armv8r/kernel/fvp_userspace.c 
b/boards/arm64/fvp-v8r/fvp-armv8r/kernel/fvp_userspace.c
index ad582ea6eda..ef17dab38db 100644
--- a/boards/arm64/fvp-v8r/fvp-armv8r/kernel/fvp_userspace.c
+++ b/boards/arm64/fvp-v8r/fvp-armv8r/kernel/fvp_userspace.c
@@ -49,6 +49,15 @@
 #  error "CONFIG_NUTTX_USERSPACE must be 0x100000 to match memory.ld"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -98,9 +107,9 @@ const struct userspace_s userspace locate_data(".userspace") 
=
   .us_bssstart      = (uintptr_t)_sbss,
   .us_bssend        = (uintptr_t)_ebss,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/risc-v/c906/smartl-c906/kernel/c906_userspace.c 
b/boards/risc-v/c906/smartl-c906/kernel/c906_userspace.c
index 15475fa43a2..f084e79736a 100644
--- a/boards/risc-v/c906/smartl-c906/kernel/c906_userspace.c
+++ b/boards/risc-v/c906/smartl-c906/kernel/c906_userspace.c
@@ -49,6 +49,15 @@
 #  error "CONFIG_NUTTX_USERSPACE must match the value in memory.ld"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -80,9 +89,9 @@ const struct userspace_s userspace locate_data(".userspace") =
 
   .us_heapend       = (uintptr_t)__ld_usram_end,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/risc-v/esp32c3-legacy/common/kernel/esp32c3_userspace.c 
b/boards/risc-v/esp32c3-legacy/common/kernel/esp32c3_userspace.c
index beae9254289..e7aa28d6d4f 100644
--- a/boards/risc-v/esp32c3-legacy/common/kernel/esp32c3_userspace.c
+++ b/boards/risc-v/esp32c3-legacy/common/kernel/esp32c3_userspace.c
@@ -45,6 +45,15 @@
 #  error "CONFIG_NUTTX_USERSPACE not defined"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -76,9 +85,9 @@ const struct userspace_s userspace locate_data(".userspace") =
 
   .us_heapend       = (uintptr_t)__ld_udram_end,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/risc-v/k210/maix-bit/kernel/k210_userspace.c 
b/boards/risc-v/k210/maix-bit/kernel/k210_userspace.c
index b4d7df28489..88383e49d89 100644
--- a/boards/risc-v/k210/maix-bit/kernel/k210_userspace.c
+++ b/boards/risc-v/k210/maix-bit/kernel/k210_userspace.c
@@ -49,6 +49,15 @@
 #  error "CONFIG_NUTTX_USERSPACE must match the value in memory.ld"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -76,9 +85,9 @@ const struct userspace_s userspace locate_data(".userspace") =
   .us_bssstart      = (uintptr_t)_sbss,
   .us_bssend        = (uintptr_t)_ebss,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/risc-v/k230/canmv230/kernel/k230_userspace.c 
b/boards/risc-v/k230/canmv230/kernel/k230_userspace.c
index 133a4dc4771..b40588eda2d 100644
--- a/boards/risc-v/k230/canmv230/kernel/k230_userspace.c
+++ b/boards/risc-v/k230/canmv230/kernel/k230_userspace.c
@@ -45,6 +45,15 @@
 #  error "CONFIG_NUTTX_USERSPACE not defined"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -76,9 +85,9 @@ const struct userspace_s userspace locate_data(".userspace") =
 
   .us_heapend       = (uintptr_t)__ld_usram_end,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/risc-v/mpfs/common/kernel/mpfs_userspace.c 
b/boards/risc-v/mpfs/common/kernel/mpfs_userspace.c
index 6f09ccf6654..ca0b1e0f7f3 100644
--- a/boards/risc-v/mpfs/common/kernel/mpfs_userspace.c
+++ b/boards/risc-v/mpfs/common/kernel/mpfs_userspace.c
@@ -45,6 +45,15 @@
 #  error "CONFIG_NUTTX_USERSPACE not defined"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -76,9 +85,9 @@ const struct userspace_s userspace locate_data(".userspace") =
 
   .us_heapend       = (uintptr_t)__ld_usram_end,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/risc-v/qemu-rv/rv-virt/kernel/rv_virt_userspace.c 
b/boards/risc-v/qemu-rv/rv-virt/kernel/rv_virt_userspace.c
index eaf2c8953ce..18a67106822 100644
--- a/boards/risc-v/qemu-rv/rv-virt/kernel/rv_virt_userspace.c
+++ b/boards/risc-v/qemu-rv/rv-virt/kernel/rv_virt_userspace.c
@@ -45,6 +45,15 @@
 #  error "CONFIG_NUTTX_USERSPACE not defined"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -76,9 +85,9 @@ const struct userspace_s userspace locate_data(".userspace") =
 
   .us_heapend       = (uintptr_t)__ld_usram_end,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/xtensa/esp32/common/kernel/esp32_userspace.c 
b/boards/xtensa/esp32/common/kernel/esp32_userspace.c
index d4ce744bec5..1a78133376f 100644
--- a/boards/xtensa/esp32/common/kernel/esp32_userspace.c
+++ b/boards/xtensa/esp32/common/kernel/esp32_userspace.c
@@ -45,6 +45,15 @@
 #  error "CONFIG_NUTTX_USERSPACE not defined"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -76,9 +85,9 @@ const struct userspace_s userspace locate_data(".userspace") =
 
   .us_heapend       = (uintptr_t)__ld_udram_end,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/boards/xtensa/esp32s3/common/kernel/esp32s3_userspace.c 
b/boards/xtensa/esp32s3/common/kernel/esp32s3_userspace.c
index 2dfd8d290a7..5c12945939c 100644
--- a/boards/xtensa/esp32s3/common/kernel/esp32s3_userspace.c
+++ b/boards/xtensa/esp32s3/common/kernel/esp32s3_userspace.c
@@ -45,6 +45,15 @@
 #  error "CONFIG_NUTTX_USERSPACE not defined"
 #endif
 
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct userspace_data_s g_userspace_data =
+{
+  .us_heap = &g_mmheap,
+};
+
 /****************************************************************************
  * Public Data
  ****************************************************************************/
@@ -76,9 +85,9 @@ const struct userspace_s userspace locate_data(".userspace") =
 
   .us_heapend       = (uintptr_t)__ld_udram_end,
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  .us_heap          = &g_mmheap,
+  .us_data          = &g_userspace_data,
 
   /* Task/thread startup routines */
 
diff --git a/include/nuttx/mm/mm.h b/include/nuttx/mm/mm.h
index cb21a209d12..4f8c928b8e2 100644
--- a/include/nuttx/mm/mm.h
+++ b/include/nuttx/mm/mm.h
@@ -124,7 +124,7 @@
  * structure from the userspace interface.
  */
 
-#  define USR_HEAP (*USERSPACE->us_heap)
+#  define USR_HEAP (*USERSPACE->us_data->us_heap)
 
 #else
 /* Otherwise, the user heap data structures are in common .bss */
diff --git a/include/nuttx/userspace.h b/include/nuttx/userspace.h
index 98ecd35aca0..6b7d3363036 100644
--- a/include/nuttx/userspace.h
+++ b/include/nuttx/userspace.h
@@ -77,6 +77,11 @@
 
 struct mm_heap_s; /* Forward reference */
 
+struct userspace_data_s
+{
+  FAR struct mm_heap_s **us_heap;
+};
+
 /* Every user-space blob starts with a header that provides information about
  * the blob.  The form of that header is provided by struct userspace_s. An
  * instance of this is expected to reside at CONFIG_NUTTX_USERSPACE.
@@ -96,9 +101,9 @@ struct userspace_s
   uintptr_t us_bssend;
   uintptr_t us_heapend;
 
-  /* Memory manager heap structure */
+  /* User data memory structure */
 
-  FAR struct mm_heap_s **us_heap;
+  FAR struct userspace_data_s *us_data;
 
   /* Task startup routine */
 

Reply via email to