summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGregory Nutt <gnutt@nuttx.org>2014-09-14 09:10:09 -0600
committerGregory Nutt <gnutt@nuttx.org>2014-09-14 09:10:09 -0600
commit800a28e9274353b3d9257f0fee3126e2d9c33d04 (patch)
tree1cdb292678a07d00969fc180094c121a58e85795
parent47fe70d7c6af1d7135e2b39104aebd78e76ff135 (diff)
downloadnuttx-800a28e9274353b3d9257f0fee3126e2d9c33d04.tar.gz
nuttx-800a28e9274353b3d9257f0fee3126e2d9c33d04.tar.bz2
nuttx-800a28e9274353b3d9257f0fee3126e2d9c33d04.zip
Rename everything associated with the dynamic process stack to ustack to make room in the name space for a kstack
-rw-r--r--nuttx/Documentation/NuttxPortingGuide.html36
-rw-r--r--nuttx/arch/Kconfig47
-rwxr-xr-xnuttx/arch/arm/include/armv7-a/irq.h17
-rw-r--r--nuttx/arch/arm/src/a1x/Make.defs5
-rw-r--r--nuttx/arch/arm/src/armv7-a/arm_addrenv.c8
-rw-r--r--nuttx/arch/arm/src/armv7-a/arm_addrenv_ustack.c (renamed from nuttx/arch/arm/src/armv7-a/arm_addrenv_stack.c)42
-rw-r--r--nuttx/arch/arm/src/sama5/Make.defs5
-rw-r--r--nuttx/include/nuttx/addrenv.h18
-rw-r--r--nuttx/include/nuttx/arch.h28
-rw-r--r--nuttx/libc/spawn/lib_psa_init.c2
10 files changed, 133 insertions, 75 deletions
diff --git a/nuttx/Documentation/NuttxPortingGuide.html b/nuttx/Documentation/NuttxPortingGuide.html
index 9ebccab1b..279bb57f0 100644
--- a/nuttx/Documentation/NuttxPortingGuide.html
+++ b/nuttx/Documentation/NuttxPortingGuide.html
@@ -116,10 +116,10 @@
<a href="#up_addrenv_clone">4.4.8 <code>up_addrenv_clone()</code></a></br>
<a href="#up_addrenv_attach">4.4.9 <code>up_addrenv_attach()</code></a></br>
<a href="#up_addrenv_detach">4.4.10 <code>up_addrenv_detach()</code></a></br>
- <a href="#up_addrenv_stackalloc">4.4.11 <code>up_addrenv_stackalloc()</code></a></br>
- <a href="#up_addrenv_stackfree">4.4.12 <code>up_addrenv_stackfree()</code></a></br>
- <a href="#up_addrenv_vstack">4.4.13 <code>up_addrenv_vstack()</code></a></br>
- <a href="#up_addrenv_stackselect">4.4.14 <code>up_addrenv_stackselect()</code></a>
+ <a href="#up_addrenv_ustackalloc">4.4.11 <code>up_addrenv_ustackalloc()</code></a></br>
+ <a href="#up_addrenv_ustackfree">4.4.12 <code>up_addrenv_ustackfree()</code></a></br>
+ <a href="#up_addrenv_vustack">4.4.13 <code>up_addrenv_vustack()</code></a></br>
+ <a href="#up_addrenv_ustackselect">4.4.14 <code>up_addrenv_ustackselect()</code></a>
</ul>
<a href="#exports">4.5 APIs Exported by NuttX to Architecture-Specific Logic</a>
<ul>
@@ -2985,16 +2985,16 @@ VxWorks provides the following comparable interface:
</p>
<ul>
<li>
- <a href="#up_addrenv_stackalloc">4.4.11 <code>up_addrenv_stackalloc()</code></a>:
+ <a href="#up_addrenv_ustackalloc">4.4.11 <code>up_addrenv_ustackalloc()</code></a>:
Create a stack address environment
<li>
- <a href="#up_addrenv_stackfree">4.4.12 <code>up_addrenv_stackfree()</code></a>:
+ <a href="#up_addrenv_ustackfree">4.4.12 <code>up_addrenv_ustackfree()</code></a>:
Destroy a stack address environment.
<li>
- <a href="#up_addrenv_vstack">4.4.13 <code>up_addrenv_vstack()</code></a>:
+ <a href="#up_addrenv_vustack">4.4.13 <code>up_addrenv_vustack()</code></a>:
Returns the virtual base address of the stack
<li>
- <a href="#up_addrenv_stackselect">4.4.14 <code>up_addrenv_stackselect()</code></a>:
+ <a href="#up_addrenv_ustackselect">4.4.14 <code>up_addrenv_ustackselect()</code></a>:
Instantiate a stack address environment
</ul>
</li>
@@ -3208,16 +3208,16 @@ VxWorks provides the following comparable interface:
Zero (<code>OK</code>) on success; a negated <code>errno</code> value on failure.
</ul>
-<h3><a name="up_addrenv_stackalloc">4.4.11 <code>up_addrenv_stackalloc()</code></a></h3>
+<h3><a name="up_addrenv_ustackalloc">4.4.11 <code>up_addrenv_ustackalloc()</code></a></h3>
<p><b>Function Prototype</b>:<p>
<ul>
- <code>int up_addrenv_stackalloc(FAR struct tcb_s *tcb, size_t stacksize);</code>
+ <code>int up_addrenv_ustackalloc(FAR struct tcb_s *tcb, size_t stacksize);</code>
</ul>
<p><b>Description</b>:</p>
<ul>
<p>
This function is called when a new thread is created in order to instantiate an address environment for the new thread's stack.
- <code>up_addrenv_stackalloc()</code> is essentially the allocator of the physical memory for the new task's stack.
+ <code>up_addrenv_ustackalloc()</code> is essentially the allocator of the physical memory for the new task's stack.
</p>
</ul>
<p><b>Input Parameters</b>:</p>
@@ -3230,10 +3230,10 @@ VxWorks provides the following comparable interface:
Zero (<code>OK</code>) on success; a negated <code>errno</code> value on failure.
</ul>
-<h3><a name="up_addrenv_up_addrenv_stackfreeattach">4.4.12 <code>up_addrenv_stackfree()</code></a></h3>
+<h3><a name="up_addrenv_up_addrenv_ustackfreeattach">4.4.12 <code>up_addrenv_ustackfree()</code></a></h3>
<p><b>Function Prototype</b>:<p>
<ul>
- <code>int up_addrenv_stackfree(FAR struct tcb_s *tcb);</code>
+ <code>int up_addrenv_ustackfree(FAR struct tcb_s *tcb);</code>
</ul>
<p><b>Description</b>:</p>
<ul>
@@ -3251,10 +3251,10 @@ VxWorks provides the following comparable interface:
Zero (<code>OK</code>) on success; a negated <code>errno</code> value on failure.
</ul>
-<h3><a name="up_addrenv_vstack">4.4.13 <code>up_addrenv_vstack()</code></a></h3>
+<h3><a name="up_addrenv_vustack">4.4.13 <code>up_addrenv_vustack()</code></a></h3>
<p><b>Function Prototype</b>:<p>
<ul>
- <code>int up_addrenv_vstack(FAR const struct tcb_s *tcb, FAR void **vstack);</code>
+ <code>int up_addrenv_vustack(FAR const struct tcb_s *tcb, FAR void **vstack);</code>
</ul>
<p><b>Description</b>:</p>
<ul>
@@ -3272,15 +3272,15 @@ VxWorks provides the following comparable interface:
Zero (<code>OK</code>) on success; a negated <code>errno</code> value on failure.
</ul>
-<h3><a name="up_addrenv_stackselect">4.4.14 <code>up_addrenv_stackselect()</code></a></h3>
+<h3><a name="up_addrenv_ustackselect">4.4.14 <code>up_addrenv_ustackselect()</code></a></h3>
<p><b>Function Prototype</b>:<p>
<ul>
- <code>int up_addrenv_stackselect(FAR const struct tcb_s *tcb);</code>
+ <code>int up_addrenv_ustackselect(FAR const struct tcb_s *tcb);</code>
</ul>
<p><b>Description</b>:</p>
<ul>
<P>
- After an address environment has been established for a task's stack (via <code>up_addrenv_stackalloc()</code>.
+ After an address environment has been established for a task's stack (via <code>up_addrenv_ustackalloc()</code>.
This function may be called to instantiate that address environment in the virtual address space.
This is a necessary step before each context switch to the newly created thread (including the initial thread startup).
</p>
diff --git a/nuttx/arch/Kconfig b/nuttx/arch/Kconfig
index 76daa1810..e552869e4 100644
--- a/nuttx/arch/Kconfig
+++ b/nuttx/arch/Kconfig
@@ -224,10 +224,9 @@ config ARCH_HEAP_NPAGES
the heap virtual address space. Default is 1.
config ARCH_STACK_DYNAMIC
- bool "Dynamic stack"
- default n if !BUILD_KERNEL || !LIBC_EXECFUNCS
- default y if BUILD_KERNEL && LIBC_EXECFUNCS
- depends on EXPERIMENTAL
+ bool "Dynamic user stack"
+ default n
+ depends on BUILD_KERNEL && EXPERIMENTAL
---help---
Select this option if the user process stack resides in its own
address space. The naming of this selection implies that dynamic
@@ -236,10 +235,9 @@ config ARCH_STACK_DYNAMIC
general meaning of this configuration environment is simply that the
stack has its own address space.
- NOTE: This option is also *required* if BUILD_KERNEL and
- LIBC_EXECFUNCS are selected. Why? Because the caller's stack must
- be preserved in its own address space when we instantiate the
- environment of the new process in order to initialize it.
+ NOTE: This option not yet fully implemented in the code base.
+ Hence, it is marked EXPERIMENTAL: Do not enable it unless you plan
+ finish the implementation.
if ARCH_STACK_DYNAMIC
@@ -258,6 +256,39 @@ config ARCH_STACK_NPAGES
endif # ARCH_STACK_DYNAMIC
+config ARCH_KERNEL_STACK
+ bool "Kernel process stack"
+ default n if !LIBC_EXECFUNCS
+ default y if LIBC_EXECFUNCS
+ depends on BUILD_KERNEL
+ ---help---
+ It this option is selected, then every user process will have two
+ stacks: A large, potentially dynamically sized user stack and small
+ kernel stack that is used during system call process.
+
+ If this option is not selected, then kernel system calls will simply
+ use the caller's user stack. So, in most cases, this option is not
+ required. However, this option is *required* if both BUILD_KERNEL
+ and LIBC_EXECFUNCS are selected. Why? Because when we instantiate
+ and initialize the address environment of the new user process, we
+ will temporarily lose the address environment of the old user
+ process, including its stack contents. The kernel C logic will
+ crash immediately with no valid stack in place.
+
+ When this option is selected, the smaller kernel stack stays in
+ place during system call processing event though the original user
+ stack may or may not be accessible.
+
+if ARCH_KERNEL_STACK
+
+config ARCH_KERNEL_STACKSIZE
+ int "Kernel stack size"
+ default 1568
+ ---help---
+ The common size of each process' kernel stack
+
+endif # ARCH_KERNEL_STACK
+
config ARCH_PGPOOL_MAPPING
bool "Have page pool mapping"
default n
diff --git a/nuttx/arch/arm/include/armv7-a/irq.h b/nuttx/arch/arm/include/armv7-a/irq.h
index f9d5225b3..612f4cbea 100755
--- a/nuttx/arch/arm/include/armv7-a/irq.h
+++ b/nuttx/arch/arm/include/armv7-a/irq.h
@@ -274,14 +274,27 @@ struct xcptcontext
struct xcpt_syscall_s syscall[CONFIG_SYS_NNEST];
#endif
-#if defined(CONFIG_ARCH_ADDRENV) && defined(CONFIG_ARCH_STACK_DYNAMIC)
+#ifdef CONFIG_ARCH_ADDRENV
+#ifdef CONFIG_ARCH_STACK_DYNAMIC
/* This table holds the physical address of the level 2 page table used
* to map the thread's stack memory. This array will be initially of
* zeroed and would be back-up up with pages during page fault exception
* handling to support dynamically sized stacks for each thread.
*/
- FAR uintptr_t *stack[ARCH_STACK_NSECTS];
+ FAR uintptr_t *ustack[ARCH_STACK_NSECTS];
+#endif
+#ifdef CONFIG_ARCH_KERNEL_STACK
+ /* In this configuration, all syscalls execute from an internal kernel
+ * stack. Why? Because when we instantiate and initialize the address
+ * environment of the new user process, we will temporarily lose the
+ * address environment of the old user process, including its stack
+ * contents. The kernel C logic will crash immediately with no valid
+ * stack in place.
+ */
+
+ FAR uintptr_t *kstack;
+#endif
#endif
};
#endif
diff --git a/nuttx/arch/arm/src/a1x/Make.defs b/nuttx/arch/arm/src/a1x/Make.defs
index 22f506544..d7d5dfbc4 100644
--- a/nuttx/arch/arm/src/a1x/Make.defs
+++ b/nuttx/arch/arm/src/a1x/Make.defs
@@ -93,7 +93,10 @@ endif
ifeq ($(CONFIG_ARCH_ADDRENV),y)
CMN_CSRCS += arm_addrenv.c arm_addrenv_utils.c arm_pgalloc.c
ifeq ($(CONFIG_ARCH_STACK_DYNAMIC),y)
-CMN_CSRCS += arm_addrenv_stack.c
+CMN_CSRCS += arm_addrenv_ustack.c
+endif
+ifeq ($(CONFIG_ARCH_KERNEL_STACK),y)
+CMN_CSRCS += arm_addrenv_kstack.c
endif
endif
diff --git a/nuttx/arch/arm/src/armv7-a/arm_addrenv.c b/nuttx/arch/arm/src/armv7-a/arm_addrenv.c
index 257a14a36..fcc1eb1f1 100644
--- a/nuttx/arch/arm/src/armv7-a/arm_addrenv.c
+++ b/nuttx/arch/arm/src/armv7-a/arm_addrenv.c
@@ -79,10 +79,10 @@
* If CONFIG_ARCH_STACK_DYNAMIC=y is selected then the platform specific
* code must export these additional interfaces:
*
- * up_addrenv_stackalloc - Create a stack address environment
- * up_addrenv_stackfree - Destroy a stack address environment.
- * up_addrenv_vstack - Returns the virtual base address of the stack
- * up_addrenv_stackselect - Instantiate a stack address environment
+ * up_addrenv_ustackalloc - Create a stack address environment
+ * up_addrenv_ustackfree - Destroy a stack address environment.
+ * up_addrenv_vustack - Returns the virtual base address of the stack
+ * up_addrenv_ustackselect - Instantiate a stack address environment
*
****************************************************************************/
diff --git a/nuttx/arch/arm/src/armv7-a/arm_addrenv_stack.c b/nuttx/arch/arm/src/armv7-a/arm_addrenv_ustack.c
index 225906f81..e30dfa4e3 100644
--- a/nuttx/arch/arm/src/armv7-a/arm_addrenv_stack.c
+++ b/nuttx/arch/arm/src/armv7-a/arm_addrenv_ustack.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * arch/arm/src/armv7/arm_addrenv_stack.c
+ * arch/arm/src/armv7/arm_addrenv_ustack.c
*
* Copyright (C) 2014 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
@@ -79,10 +79,10 @@
* If CONFIG_ARCH_STACK_DYNAMIC=y is selected then the platform specific
* code must export these additional interfaces:
*
- * up_addrenv_stackalloc - Create a stack address environment
- * up_addrenv_stackfree - Destroy a stack address environment.
- * up_addrenv_vstack - Returns the virtual base address of the stack
- * up_addrenv_stackselect - Instantiate a stack address environment
+ * up_addrenv_ustackalloc - Create a stack address environment
+ * up_addrenv_ustackfree - Destroy a stack address environment.
+ * up_addrenv_vustack - Returns the virtual base address of the stack
+ * up_addrenv_ustackselect - Instantiate a stack address environment
*
****************************************************************************/
@@ -129,12 +129,12 @@
****************************************************************************/
/****************************************************************************
- * Name: up_addrenv_stackalloc
+ * Name: up_addrenv_ustackalloc
*
* Description:
* This function is called when a new thread is created in order to
* instantiate an address environment for the new thread's stack.
- * up_addrenv_stackalloc() is essentially the allocator of the physical
+ * up_addrenv_ustackalloc() is essentially the allocator of the physical
* memory for the new task's stack.
*
* Input Parameters:
@@ -147,7 +147,7 @@
*
****************************************************************************/
-int up_addrenv_stackalloc(FAR struct tcb_s *tcb, size_t stacksize)
+int up_addrenv_ustackalloc(FAR struct tcb_s *tcb, size_t stacksize)
{
int ret;
@@ -157,7 +157,7 @@ int up_addrenv_stackalloc(FAR struct tcb_s *tcb, size_t stacksize)
/* Initialize the address environment list to all zeroes */
- memset(tcb->xcp.stack, 0, ARCH_STACK_NSECTS * sizeof(uintptr_t *));
+ memset(tcb->xcp.ustack, 0, ARCH_STACK_NSECTS * sizeof(uintptr_t *));
/* Back the allocation up with physical pages and set up the level 2 mapping
* (which of course does nothing until the L2 page table is hooked into
@@ -166,13 +166,13 @@ int up_addrenv_stackalloc(FAR struct tcb_s *tcb, size_t stacksize)
/* Allocate .text space pages */
- ret = arm_addrenv_create_region(tcb->xcp.stack, ARCH_STACK_NSECTS,
+ ret = arm_addrenv_create_region(tcb->xcp.ustack, ARCH_STACK_NSECTS,
CONFIG_ARCH_STACK_VBASE, stacksize,
MMU_L2_UDATAFLAGS);
if (ret < 0)
{
bdbg("ERROR: Failed to create stack region: %d\n", ret);
- up_addrenv_stackfree(tcb);
+ up_addrenv_ustackfree(tcb);
return ret;
}
@@ -180,7 +180,7 @@ int up_addrenv_stackalloc(FAR struct tcb_s *tcb, size_t stacksize)
}
/****************************************************************************
- * Name: up_addrenv_stackfree
+ * Name: up_addrenv_ustackfree
*
* Description:
* This function is called when any thread exits. This function then
@@ -196,22 +196,22 @@ int up_addrenv_stackalloc(FAR struct tcb_s *tcb, size_t stacksize)
*
****************************************************************************/
-int up_addrenv_stackfree(FAR struct tcb_s *tcb)
+int up_addrenv_ustackfree(FAR struct tcb_s *tcb)
{
bvdbg("tcb=%p\n", tcb);
DEBUGASSERT(tcb);
/* Destroy the stack region */
- arm_addrenv_destroy_region(tcb->xcp.stack, ARCH_STACK_NSECTS,
+ arm_addrenv_destroy_region(tcb->xcp.ustack, ARCH_STACK_NSECTS,
CONFIG_ARCH_STACK_VBASE);
- memset(tcb->xcp.stack, 0, ARCH_STACK_NSECTS * sizeof(uintptr_t *));
+ memset(tcb->xcp.ustack, 0, ARCH_STACK_NSECTS * sizeof(uintptr_t *));
return OK;
}
/****************************************************************************
- * Name: up_addrenv_vstack
+ * Name: up_addrenv_vustack
*
* Description:
* Return the virtual address associated with the newly create stack
@@ -227,7 +227,7 @@ int up_addrenv_stackfree(FAR struct tcb_s *tcb)
*
****************************************************************************/
-int up_addrenv_vstack(FAR const struct tcb_s *tcb, FAR void **vstack)
+int up_addrenv_vustack(FAR const struct tcb_s *tcb, FAR void **vstack)
{
bvdbg("Return=%p\n", (FAR void *)CONFIG_ARCH_STACK_VBASE);
@@ -239,11 +239,11 @@ int up_addrenv_vstack(FAR const struct tcb_s *tcb, FAR void **vstack)
}
/****************************************************************************
- * Name: up_addrenv_stackselect
+ * Name: up_addrenv_ustackselect
*
* Description:
* After an address environment has been established for a task's stack
- * (via up_addrenv_stackalloc(). This function may be called to instantiate
+ * (via up_addrenv_ustackalloc(). This function may be called to instantiate
* that address environment in the virtual address space. This is a
* necessary step before each context switch to the newly created thread
* (including the initial thread startup).
@@ -257,7 +257,7 @@ int up_addrenv_vstack(FAR const struct tcb_s *tcb, FAR void **vstack)
*
****************************************************************************/
-int up_addrenv_stackselect(FAR const struct tcb_s *tcb)
+int up_addrenv_ustackselect(FAR const struct tcb_s *tcb)
{
uintptr_t vaddr;
uintptr_t paddr;
@@ -271,7 +271,7 @@ int up_addrenv_stackselect(FAR const struct tcb_s *tcb)
{
/* Set (or clear) the new page table entry */
- paddr = (uintptr_t)tcb->xcp.stack[i];
+ paddr = (uintptr_t)tcb->xcp.ustack[i];
if (paddr)
{
mmu_l1_setentry(paddr, vaddr, MMU_L1_PGTABFLAGS);
diff --git a/nuttx/arch/arm/src/sama5/Make.defs b/nuttx/arch/arm/src/sama5/Make.defs
index 59654e5e3..748ebf987 100644
--- a/nuttx/arch/arm/src/sama5/Make.defs
+++ b/nuttx/arch/arm/src/sama5/Make.defs
@@ -95,7 +95,10 @@ endif
ifeq ($(CONFIG_ARCH_ADDRENV),y)
CMN_CSRCS += arm_addrenv.c arm_addrenv_utils.c arm_pgalloc.c
ifeq ($(CONFIG_ARCH_STACK_DYNAMIC),y)
-CMN_CSRCS += arm_addrenv_stack.c
+CMN_CSRCS += arm_addrenv_ustack.c
+endif
+ifeq ($(CONFIG_ARCH_KERNEL_STACK),y)
+CMN_CSRCS += arm_addrenv_kstack.c
endif
endif
diff --git a/nuttx/include/nuttx/addrenv.h b/nuttx/include/nuttx/addrenv.h
index 936b7ee14..ac5dce56e 100644
--- a/nuttx/include/nuttx/addrenv.h
+++ b/nuttx/include/nuttx/addrenv.h
@@ -139,7 +139,7 @@
#define ARCH_HEAP_VEND (CONFIG_ARCH_HEAP_VBASE + ARCH_HEAP_SIZE)
#ifdef CONFIG_ARCH_STACK_DYNAMIC
- /* Stack region */
+ /* User stack region */
# ifndef CONFIG_ARCH_STACK_VBASE
# error CONFIG_ARCH_STACK_VBASE not defined
@@ -158,6 +158,14 @@
# define ARCH_STACK_SIZE (CONFIG_ARCH_STACK_NPAGES * CONFIG_MM_PGSIZE)
# define ARCH_STACK_VEND (CONFIG_ARCH_STACK_VBASE + ARCH_STACK_SIZE)
+#ifdef CONFIG_ARCH_KERNEL_STACK
+/* Kernel stack */
+
+# ifndef CONFIG_ARCH_KERNEL_STACKSIZE
+# define CONFIG_ARCH_KERNEL_STACKSIZE 1568
+# endif
+#endif
+
/* A single page scratch region used for temporary mappings */
# define ARCH_SCRATCH_VBASE ARCH_STACK_VEND
@@ -290,10 +298,10 @@ struct addrenv_reserve_s
* If CONFIG_ARCH_STACK_DYNAMIC=y is selected then the platform specific
* code must export these additional interfaces:
*
- * up_addrenv_stackalloc - Create a stack address environment
- * up_addrenv_stackfree - Destroy a stack address environment.
- * up_addrenv_vstack - Returns the virtual base address of the stack
- * up_addrenv_stackselect - Instantiate a stack address environment
+ * up_addrenv_ustackalloc - Create a stack address environment
+ * up_addrenv_ustackfree - Destroy a stack address environment.
+ * up_addrenv_vustack - Returns the virtual base address of the stack
+ * up_addrenv_ustackselect - Instantiate a stack address environment
*
****************************************************************************/
diff --git a/nuttx/include/nuttx/arch.h b/nuttx/include/nuttx/arch.h
index d626e230a..7199b836b 100644
--- a/nuttx/include/nuttx/arch.h
+++ b/nuttx/include/nuttx/arch.h
@@ -763,10 +763,10 @@ uintptr_t pgalloc(uintptr_t brkaddr, unsigned int npages);
* If CONFIG_ARCH_STACK_DYNAMIC=y is selected then the platform specific
* code must export these additional interfaces:
*
- * up_addrenv_stackalloc - Create a stack address environment
- * up_addrenv_stackfree - Destroy a stack address environment.
- * up_addrenv_vstack - Returns the virtual base address of the stack
- * up_addrenv_stackselect - Instantiate a stack address environment
+ * up_addrenv_ustackalloc - Create a stack address environment
+ * up_addrenv_ustackfree - Destroy a stack address environment.
+ * up_addrenv_vustack - Returns the virtual base address of the stack
+ * up_addrenv_ustackselect - Instantiate a stack address environment
*
****************************************************************************/
/****************************************************************************
@@ -1044,12 +1044,12 @@ int up_addrenv_detach(FAR struct task_group_s *group, FAR struct tcb_s *tcb);
#endif
/****************************************************************************
- * Name: up_addrenv_stackalloc
+ * Name: up_addrenv_ustackalloc
*
* Description:
* This function is called when a new thread is created in order to
* instantiate an address environment for the new thread's stack.
- * up_addrenv_stackalloc() is essentially the allocator of the physical
+ * up_addrenv_ustackalloc() is essentially the allocator of the physical
* memory for the new task's stack.
*
* Input Parameters:
@@ -1063,11 +1063,11 @@ int up_addrenv_detach(FAR struct task_group_s *group, FAR struct tcb_s *tcb);
****************************************************************************/
#if defined(CONFIG_ARCH_ADDRENV) && defined(CONFIG_ARCH_STACK_DYNAMIC)
-int up_addrenv_stackalloc(FAR struct tcb_s *tcb, size_t stacksize);
+int up_addrenv_ustackalloc(FAR struct tcb_s *tcb, size_t stacksize);
#endif
/****************************************************************************
- * Name: up_addrenv_stackfree
+ * Name: up_addrenv_ustackfree
*
* Description:
* This function is called when any thread exits. This function then
@@ -1084,11 +1084,11 @@ int up_addrenv_stackalloc(FAR struct tcb_s *tcb, size_t stacksize);
****************************************************************************/
#if defined(CONFIG_ARCH_ADDRENV) && defined(CONFIG_ARCH_STACK_DYNAMIC)
-int up_addrenv_stackfree(FAR struct tcb_s *tcb);
+int up_addrenv_ustackfree(FAR struct tcb_s *tcb);
#endif
/****************************************************************************
- * Name: up_addrenv_vstack
+ * Name: up_addrenv_vustack
*
* Description:
* Return the virtual address associated with the newly create stack
@@ -1105,15 +1105,15 @@ int up_addrenv_stackfree(FAR struct tcb_s *tcb);
****************************************************************************/
#if defined(CONFIG_ARCH_ADDRENV) && defined(CONFIG_ARCH_STACK_DYNAMIC)
-int up_addrenv_vstack(FAR const struct tcb_s *tcb, FAR void **vstack);
+int up_addrenv_vustack(FAR const struct tcb_s *tcb, FAR void **vstack);
#endif
/****************************************************************************
- * Name: up_addrenv_stackselect
+ * Name: up_addrenv_ustackselect
*
* Description:
* After an address environment has been established for a task's stack
- * (via up_addrenv_stackalloc(). This function may be called to instantiate
+ * (via up_addrenv_ustackalloc(). This function may be called to instantiate
* that address environment in the virtual address space. This is a
* necessary step before each context switch to the newly created thread
* (including the initial thread startup).
@@ -1128,7 +1128,7 @@ int up_addrenv_vstack(FAR const struct tcb_s *tcb, FAR void **vstack);
****************************************************************************/
#if defined(CONFIG_ARCH_ADDRENV) && defined(CONFIG_ARCH_STACK_DYNAMIC)
-int up_addrenv_stackselect(FAR const struct tcb_s *tcb);
+int up_addrenv_ustackselect(FAR const struct tcb_s *tcb);
#endif
/****************************************************************************
diff --git a/nuttx/libc/spawn/lib_psa_init.c b/nuttx/libc/spawn/lib_psa_init.c
index 815376e7b..afa993179 100644
--- a/nuttx/libc/spawn/lib_psa_init.c
+++ b/nuttx/libc/spawn/lib_psa_init.c
@@ -1,7 +1,7 @@
/****************************************************************************
* libc/string/lib_psa_init.c
*
- * Copyright (C) 2013 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2013-2014 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without