diff options
author | Gregory Nutt <gnutt@nuttx.org> | 2014-09-10 15:55:36 -0600 |
---|---|---|
committer | Gregory Nutt <gnutt@nuttx.org> | 2014-09-10 15:55:36 -0600 |
commit | 7b3a98b2ec57f8c56a1669b818d03dfcd1a84fb2 (patch) | |
tree | 776264ed920f68eed300648dffe198e286495000 /nuttx/Documentation/NuttxPortingGuide.html | |
parent | 22c64f6c542675d4865d2a013468089c92f43869 (diff) | |
download | px4-nuttx-7b3a98b2ec57f8c56a1669b818d03dfcd1a84fb2.tar.gz px4-nuttx-7b3a98b2ec57f8c56a1669b818d03dfcd1a84fb2.tar.bz2 px4-nuttx-7b3a98b2ec57f8c56a1669b818d03dfcd1a84fb2.zip |
Add logic to initialize the per-process user heap when each user process is started
Diffstat (limited to 'nuttx/Documentation/NuttxPortingGuide.html')
-rw-r--r-- | nuttx/Documentation/NuttxPortingGuide.html | 68 |
1 files changed, 47 insertions, 21 deletions
diff --git a/nuttx/Documentation/NuttxPortingGuide.html b/nuttx/Documentation/NuttxPortingGuide.html index a2d1d0884..eb5a67cc1 100644 --- a/nuttx/Documentation/NuttxPortingGuide.html +++ b/nuttx/Documentation/NuttxPortingGuide.html @@ -12,7 +12,7 @@ <h1><big><font color="#3c34ec"> <i>NuttX RTOS Porting Guide</i> </font></big></h1> - <p>Last Updated: August 29, 2014</p> + <p>Last Updated: September 10, 2014</p> </td> </tr> </table> @@ -110,11 +110,12 @@ <a href="#up_addrenv_destroy">4.4.2 <code>up_addrenv_destroy()</code></a></br> <a href="#up_addrenv_vtext">4.4.3 <code>up_addrenv_vtext()</code></a></br> <a href="#up_addrenv_vdata">4.4.4 <code>up_addrenv_vdata()</code></a></br> - <a href="#up_addrenv_select">4.4.5 <code>up_addrenv_select()</code></a></br> - <a href="#up_addrenv_restore">4.4.6 <code>up_addrenv_restore()</code></a></br> - <a href="#up_addrenv_clone">4.4.7 <code>up_addrenv_clone()</code></a></br> - <a href="#up_addrenv_attach">4.4.8 <code>up_addrenv_attach()</code></a></br> - <a href="#up_addrenv_detach">4.4.9 <code>up_addrenv_detach()</code></a> + <a href="#up_addrenv_heapsize">4.4.5 <code>up_addrenv_heapsize()</code></a></br> + <a href="#up_addrenv_select">4.4.6 <code>up_addrenv_select()</code></a></br> + <a href="#up_addrenv_restore">4.4.7 <code>up_addrenv_restore()</code></a></br> + <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> </ul> <a href="#exports">4.5 APIs Exported by NuttX to Architecture-Specific Logic</a> <ul> @@ -2927,15 +2928,19 @@ VxWorks provides the following comparable interface: Returns the virtual base address of the <code>.bss</code>/<code>.data</code> address environment. </li> <li> - <a href="#up_addrenv_select">4.4.5 <code>up_addrenv_select()</code></a>: + <a href="#up_addrenv_heapsize">4.4.5 <code>up_addrenv_heapsize()</code></a>: + Return the initial heap size. + </li> + <li> + <a href="#up_addrenv_select">4.4.6 <code>up_addrenv_select()</code></a>: Instantiate an address environment. </li> <li> - <a href="#up_addrenv_restore">4.4.6 <code>up_addrenv_restore()</code></a>: + <a href="#up_addrenv_restore">4.4.7 <code>up_addrenv_restore()</code></a>: Restore an address environment. </li> <li> - <a href="#up_addrenv_clone">4.4.7 <code>up_addrenv_clone()</code></a>: + <a href="#up_addrenv_clone">4.4.8 <code>up_addrenv_clone()</code></a>: Copy an address environment from one location to another. </li> </ul> @@ -2948,12 +2953,12 @@ VxWorks provides the following comparable interface: </p> <ul> <li> - <a href="#up_addrenv_attach">4.4.8 <code>up_addrenv_attach()</code></a>: + <a href="#up_addrenv_attach">4.4.9 <code>up_addrenv_attach()</code></a>: Clone the group address environment assigned to a new thread. This operation is done when a pthread is created that share's the same address environment. </li> <li> - <a href="#up_addrenv_detach">4.4.9 <code>up_addrenv_detach()</code></a>: + <a href="#up_addrenv_detach">4.4.10 <code>up_addrenv_detach()</code></a>: Release the thread's reference to a group address environment when a task/thread exits. </li> </ul> @@ -2963,7 +2968,7 @@ VxWorks provides the following comparable interface: <h3><a name="up_addrenv_create">4.4.1 <code>up_addrenv_create()</code></a></h3> <p><b>Function Prototype</b>:</p> <ul> - <code>int up_addrenv_create(size_t textsize, size_t datasize, FAR group_addrenv_t *addrenv);</code> + <code>int up_addrenv_create(size_t textsize, size_t datasize, size_t heapsize, FAR group_addrenv_t *addrenv);</code> </ul> <p><b>Description</b>:</p> <ul> @@ -2974,6 +2979,7 @@ VxWorks provides the following comparable interface: <ul> <li><code>textsize</code>: The size (in bytes) of the <code>.text</code> address environment needed by the task. This region may be read/execute only.</li> <li><code>datasize</code>: The size (in bytes) of the <code>.bss/.data</code> address environment needed by the task. This region may be read/write only.</li> + <li><code>heapsize</code>: The initial size (in bytes) of the heap address environment needed by the task. This region may be read/write only.</li> <li><code>addrenv</code>: The location to return the representation of the task address environment.</li> </ul> <p><b>Returned Value</b>:</p> @@ -2992,7 +2998,7 @@ VxWorks provides the following comparable interface: </ul> <p><b>Input Parameters</b>:</p> <ul> - <li><code>addrenv</code>: The representation of the task address environment previously returned by up_addrenv_create.</li> + <li><code>addrenv</code>: The representation of the task address environment previously returned by <code>up_addrenv_create()</code>.</li> </ul> <p><b>Returned Value</b>:</p> <ul> @@ -3011,7 +3017,7 @@ VxWorks provides the following comparable interface: </ul> <p><b>Input Parameters</b>:</p> <ul> - <li><code>addrenv</code>: The representation of the task address environment previously returned by up_addrenv_create.</li> + <li><code>addrenv</code>: The representation of the task address environment previously returned by <code>up_addrenv_create()</code>.</li> <li><code>vtext</code>: The location to return the virtual address.</li> </ul> <p><b>Returned Value</b>:</p> @@ -3031,7 +3037,7 @@ VxWorks provides the following comparable interface: </ul> <p><b>Input Parameters</b>:</p> <ul> - <li><code>addrenv</code>: The representation of the task address environment previously returned by up_addrenv_create.</li> + <li><code>addrenv</code>: The representation of the task address environment previously returned by <code>up_addrenv_create()</code>.</li> <li><code>textsize</code>: For some implementations, the text and data will be saved in the same memory region (read/write/execute) and, in this case, the virtual address of the data just lies at this offset into the common region.</li> <li><code>vdata</code>: The location to return the virtual address.</li> </ul> @@ -3040,7 +3046,27 @@ 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_select">4.4.5 <code>up_addrenv_select()</code></a></h3> +<h3><a name="up_addrenv_heapsize">4.4.5 <code>up_addrenv_heapsize()</code></a></h3> +<p><b>Function Prototype</b>:<p> +<ul> + <code>ssize_t up_addrenv_heapsize(FAR const group_addrenv_t *addrenv);</code> +</ul> +<p><b>Description</b>:</p> +<ul> + Return the initial heap allocation size. + That is the amount of memory allocated by <code>up_addrenv_create()</code> when the heap memory region was first created. + This may or may not differ from the <code>heapsize</code> parameter that was passed to <code>up_addrenv_create()</code>. +</ul> +<p><b>Input Parameters</b>:</p> +<ul> + <li><code>addrenv</code>: The representation of the task address environment previously returned by <code>up_addrenv_create()</code>.</li> +</ul> +<p><b>Returned Value</b>:</p> +<ul> + The initial heap size allocated is returned on success; a negated <code>errno</code> value on failure. +</ul> + +<h3><a name="up_addrenv_select">4.4.6 <code>up_addrenv_select()</code></a></h3> <p><b>Function Prototype</b>:<p> <ul> <code>int up_addrenv_select(group_addrenv_t *addrenv, save_addrenv_t *oldenv);</code> @@ -3052,7 +3078,7 @@ VxWorks provides the following comparable interface: </ul> <p><b>Input Parameters</b>:</p> <ul> - <li><code>addrenv</code>: The representation of the task address environment previously returned by up_addrenv_create.</li> + <li><code>addrenv</code>: The representation of the task address environment previously returned by <code>up_addrenv_create()</code>.</li> <li><code>oldenv</code>: The address environment that was in place before <code>up_addrenv_select()</code> was called. This may be used with <code>up_addrenv_restore()</code> to restore the original address environment that was in place before <code>up_addrenv_select()</code> was called. @@ -3064,7 +3090,7 @@ 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_restore">4.4.6 <code>up_addrenv_restore()</code></a></h3> +<h3><a name="up_addrenv_restore">4.4.7 <code>up_addrenv_restore()</code></a></h3> <p><b>Function Prototype</b>:<p> <ul> <code>int up_addrenv_restore(save_addrenv_t oldenv);</code> @@ -3083,7 +3109,7 @@ 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_clone">4.4.7 <code>up_addrenv_clone()</code></a></h3> +<h3><a name="up_addrenv_clone">4.4.8 <code>up_addrenv_clone()</code></a></h3> <p><b>Function Prototype</b>:<p> <ul> <code>int up_addrenv_clone(FAR const task_group_s *src, FAR struct task_group_s *dest);</code> @@ -3102,7 +3128,7 @@ 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_attach">4.4.8 <code>up_addrenv_attach()</code></a></h3> +<h3><a name="up_addrenv_attach">4.4.9 <code>up_addrenv_attach()</code></a></h3> <p><b>Function Prototype</b>:<p> <ul> <code>int up_addrenv_attach(FAR struct task_group_s *group, FAR struct tcb_s *tcb);</code> @@ -3128,7 +3154,7 @@ 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_detach">4.4.9 <code>up_addrenv_detach()</code></a></h3> +<h3><a name="up_addrenv_detach">4.4.10 <code>up_addrenv_detach()</code></a></h3> <p><b>Function Prototype</b>:<p> <ul> <code>int up_addrenv_detach(FAR struct task_group_s *group, FAR struct task_group_s *tcb);</code> |