]> git.saurik.com Git - apple/xnu.git/blame_incremental - osfmk/man/task_create.html
xnu-517.tar.gz
[apple/xnu.git] / osfmk / man / task_create.html
... / ...
CommitLineData
1<h2>task_create</h2>\r<hr>\r<p>\r<strong>Function</strong> - Create a new task.\r<h3>SYNOPSIS</h3>\r<pre>\r<strong>kern_return_t task_create</strong>\r <strong>(task_t</strong> <var>parent_task</var>,\r <strong>ledger_port_array_t</strong> <var>ledgers</var>,\r <strong>int</strong> <var>ledger_count</var>,\r <strong>boolean_t</strong> <var>inherit_memory</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 and address space.\r<p>\r<dt> <var>ledgers</var> \r<dd>\r[pointer to in array of ledger send rights]\rResource ledgers (on the\rdestination host) from which the task will draw its resources. The first\relement of this array is the wired kernel ledger, the second the paged \rspace ledger. If the number of ledgers supplied does not match the\rrequired number or one or more is null, the parent task's ledger is used.\r<p>\r<dt> <var>ledger_count</var> \r<dd>\r[in scalar]\rThe number of ledger ports in the <var>ledgers</var> array.\r<p>\r<dt> <var>inherit_memory</var> \r<dd>\r[in scalar]\rAddress space inheritance indicator. If true, the child task\rinherits the (inheritable) address space of the parent task. If false, the\rkernel assigns the child task an empty address space.\r<p>\r<dt> <var>child_task</var> \r<dd>\r[out task send right]\rThe kernel-assigned port for the new task.\r</dl>\r<h3>DESCRIPTION</h3>\r<p>\rThe <strong>task_create</strong> function creates a new task from <var>parent_task</var>\rand returns the name of the new task in <var>child_task</var>. \rThe child task acquires shared or copied parts of the parent's address space \r(see <strong>vm_inherit</strong>). The child task initially\rcontains no threads. The child task inherits the parent's security ID.\r<p>\rThe child task receives the following "special" ports, which are created or\rcopied for it at task creation:\r<dl>\r<dt> [task-self send right]\r<dd>\rThe port by which the kernel knows the new child task \rand allows it to be manipulated. The child task holds a send right for this \rport. The port name is also returned to the calling task.\r<p>\r<dt> [bootstrap send right]\r<dd>\rThe port to which the child task can send a message\rrequesting return of any system service ports that it needs (for\rexample, a port \rto the Network Name Server or the Environment Manager). The child task \rinherits a send right for this port from the parent task. The task can use \r<strong>task_set_special_port</strong> to change this port.\r<p>\r<dt> [host-self send right]\r<dd>\rThe port by which the child task requests information \rabout its host. The child task inherits a send right for this port from the\rparent task.\r<p>\r<dt> [ledger send rights]\r<dd>\rThe ports naming the ledgers from which the task draws \rits resources.\r</dl>\r<p>\rThe child task also inherits the following ports:\r<dl>\r<dt> [sample send right]\r<dd>\rThe port to which PC sampling messages are to be sent.\r<p>\r<dt> [exception send rights]\r<dd>\rPorts to which exception messages are sent.\r<p>\r<dt> [registered send rights]\r<dd>\rPorts to system services.\r</dl>\r<h3>NOTES</h3>\r<p>\rThe <strong>ledgers</strong> functionality mentioned above is not\rcurrently implemented.\r<h3>RETURN VALUES</h3>\r<p>\rOnly generic errors apply.\r<h3>RELATED INFORMATION</h3>\r<p>\rFunctions:\r<a href="task_create_security_token.html"><strong>task_create_security_token</strong></a>,\r<a href="task_resume.html"><strong>task_resume</strong></a>,\r<a href="task_set_special_port.html"><strong>task_set_special_port</strong></a>,\r<a href="task_suspend.html"><strong>task_suspend</strong></a>,\r<a href="task_terminate.html"><strong>task_terminate</strong></a>,\r<a href="task_threads.html"><strong>task_threads</strong></a>,\r<a href="thread_create.html"><strong>thread_create</strong></a>,\r<a href="thread_resume.html"><strong>thread_resume</strong></a>,\r<a href="vm_inherit.html"><strong>vm_inherit</strong></a>,\r<a href="task_sample.html"><strong>task_sample</strong></a>,\r<a href="task_set_exception_ports.html"><strong>task_set_exception_ports</strong></a>,\r<a href="mach_ports_register.html"><strong>mach_ports_register</strong></a>,\r<a href="norma_task_create.html"><strong>norma_task_create</strong></a>,\r<a href="host_security_set_task_token.html"><strong>host_security_set_task_token</strong></a>.\r