]> git.saurik.com Git - apple/xnu.git/blobdiff - osfmk/man/norma_task_clone.html
xnu-792.6.76.tar.gz
[apple/xnu.git] / osfmk / man / norma_task_clone.html
index 129835dab47614862d6412e0e01e5f192057c6eb..737acb89979c3ad0f282549c8875b52c56d4021d 100755 (executable)
@@ -1 +1,78 @@
-<h2>norma_task_clone</h2>\r<hr>\r<p>\r<strong>Function</strong> - Create a remote task that shares access to parent task's memory regardless of inheritance attributes.\r<h3>SYNOPSIS</h3>\r<pre>\r<strong>kern_return_t   norma_task_clone</strong>\r                <strong>(task_t</strong>                             <var>parent_task</var>,\r                 <strong>boolean_t</strong>                       <var>inherit_memory</var>,\r                 <strong>int</strong>                                 <var>child_node</var>,\r                 <strong>task_t</strong>                              <var>child_task</var><strong>);</strong>\r</pre>\r<h3>PARAMETERS</h3>\r<dl>\r<p>\r<dt> <var>parent_task</var> \r<dd>\r[in task send right]\rThe port for the task from which to draw the child \rtask's port rights, resource limits, and address space.\r<p>\r<dt> <var>inherit_memory</var> \r<dd>\r[in scalar]\rAddress space inheritance indicator.  If true, the child task\rinherits the address space of the parent task.  If false, the kernel assigns \rthe child task an empty address space.\r<p>\r<dt> <var>child_node</var> \r<dd>\r[in scalar]\rThe node index of the node on which to create the child.\r<p>\r<dt> <var>child_task</var> \r<dd>\r[out task send right]\rThe kernel-assigned port name for the new task.\r</dl>\r<h3>DESCRIPTION</h3>\r<p>\rThe <strong>norma_task_clone</strong> function "clones" a new task from\r<var>parent_task</var> on the specified <var>node</var> and returns the name \rof the new task in <var>child_task</var>.  The child \rtask acquires shared parts of the parent's \raddress space (see <strong>vm_inherit</strong>)\rregardless of the inheritance set for the parent's memory regions, although the\rinheritance for the child's regions will be set to that of the\rparent's regions.  The child \rtask initially contains no threads.\r<p>\rBy way of comparison, tasks created by the standard <strong>task_create</strong>\rprimitive are created on the same node as the parent.\r<p>\rOther than being created on a different node, the new task has the same\rproperties as if created by <strong>task_create</strong>.\r<h3>NOTES</h3>\r<p>\rThis call differs from <strong>norma_task_create</strong> in that the\rinheritance set for the\rparent's memory regions is ignored; the child always shares memory with the\rparent.\r<p>\rThis call is intended to support process migration, where the inheritance\rsemantics of <strong>norma_task_create</strong> would break migrated\rprograms that depended upon \rsharing relationships remaining after migration.\r<p>\rThis call is not a true task migration call, in that it does\rnot migrate the port \rspace, threads, and other non-address-space attributes of the task.\r<h3>RETURN VALUES</h3>\r<p>\rOnly generic errors apply.\r<h3>RELATED INFORMATION</h3>\r<p>\rFunctions:\r<a href="task_create.html"><strong>task_create</strong></a>,\r<a href="norma_task_create.html"><strong>norma_task_create</strong></a>.\r
\ No newline at end of file
+<h2>norma_task_clone</h2>
+<hr>
+<p>
+<strong>Function</strong> - Create a remote task that shares access to parent task's memory regardless of inheritance attributes.
+<h3>SYNOPSIS</h3>
+<pre>
+<strong>kern_return_t   norma_task_clone</strong>
+                <strong>(task_t</strong>                             <var>parent_task</var>,
+                 <strong>boolean_t</strong>                       <var>inherit_memory</var>,
+                 <strong>int</strong>                                 <var>child_node</var>,
+                 <strong>task_t</strong>                              <var>child_task</var><strong>);</strong>
+</pre>
+<h3>PARAMETERS</h3>
+<dl>
+<p>
+<dt> <var>parent_task</var> 
+<dd>
+[in task send right]
+The port for the task from which to draw the child 
+task's port rights, resource limits, and address space.
+<p>
+<dt> <var>inherit_memory</var> 
+<dd>
+[in scalar]
+Address space inheritance indicator.  If true, the child task
+inherits the address space of the parent task.  If false, the kernel assigns 
+the child task an empty address space.
+<p>
+<dt> <var>child_node</var> 
+<dd>
+[in scalar]
+The node index of the node on which to create the child.
+<p>
+<dt> <var>child_task</var> 
+<dd>
+[out task send right]
+The kernel-assigned port name for the new task.
+</dl>
+<h3>DESCRIPTION</h3>
+<p>
+The <strong>norma_task_clone</strong> function "clones" a new task from
+<var>parent_task</var> on the specified <var>node</var> and returns the name 
+of the new task in <var>child_task</var>.  The child 
+task acquires shared parts of the parent's 
+address space (see <strong>vm_inherit</strong>)
+regardless of the inheritance set for the parent's memory regions, although the
+inheritance for the child's regions will be set to that of the
+parent's regions.  The child 
+task initially contains no threads.
+<p>
+By way of comparison, tasks created by the standard <strong>task_create</strong>
+primitive are created on the same node as the parent.
+<p>
+Other than being created on a different node, the new task has the same
+properties as if created by <strong>task_create</strong>.
+<h3>NOTES</h3>
+<p>
+This call differs from <strong>norma_task_create</strong> in that the
+inheritance set for the
+parent's memory regions is ignored; the child always shares memory with the
+parent.
+<p>
+This call is intended to support process migration, where the inheritance
+semantics of <strong>norma_task_create</strong> would break migrated
+programs that depended upon 
+sharing relationships remaining after migration.
+<p>
+This call is not a true task migration call, in that it does
+not migrate the port 
+space, threads, and other non-address-space attributes of the task.
+<h3>RETURN VALUES</h3>
+<p>
+Only generic errors apply.
+<h3>RELATED INFORMATION</h3>
+<p>
+Functions:
+<a href="task_create.html"><strong>task_create</strong></a>,
+<a href="norma_task_create.html"><strong>norma_task_create</strong></a>.