mirror of
https://github.com/darlinghq/darling-xnu.git
synced 2024-11-30 07:50:34 +00:00
95 lines
2.8 KiB
HTML
95 lines
2.8 KiB
HTML
<h2>vm_inherit</h2>
|
|
<hr>
|
|
<p>
|
|
<strong>Function</strong> - Set a VM region's inheritance attribute.
|
|
<p>
|
|
<h3>SYNOPSIS</h3>
|
|
<pre>
|
|
<strong>kern_return_t vm_inherit</strong>
|
|
<strong>(vm_task_t</strong> <var>target_task</var>,
|
|
<strong>vm_address_t</strong> <var>address</var>,
|
|
<strong>vm_size_t</strong> <var>size</var>,
|
|
<strong>vm_inherit_t</strong> <var>new_inheritance</var><strong>);</strong>
|
|
</pre>
|
|
<h3>PARAMETERS</h3>
|
|
<dl>
|
|
<p>
|
|
<dt> <var>target_task</var>
|
|
<dd>
|
|
[in task send right]
|
|
The port for the task whose address space contains
|
|
the region.
|
|
<p>
|
|
<dt> <var>address</var>
|
|
<dd>
|
|
[in scalar]
|
|
The starting address for the region.
|
|
<p>
|
|
<dt> <var>size</var>
|
|
<dd>
|
|
[in scalar]
|
|
The number of bytes in the region.
|
|
<p>
|
|
<dt> <var>new_inheritance</var>
|
|
<dd>
|
|
[in scalar]
|
|
The new inheritance attribute for the region. Valid values are:
|
|
<dl>
|
|
<p>
|
|
<dt> <strong>VM_INHERIT_SHARE</strong>
|
|
<dd>
|
|
Allows child tasks to share the region.
|
|
<p>
|
|
<dt> <strong>VM_INHERIT_COPY</strong>
|
|
<dd>
|
|
Gives child tasks a copy of the region.
|
|
<p>
|
|
<dt> <strong>VM_INHERIT_NONE</strong>
|
|
<dd>
|
|
Provides no access to the region for child tasks.
|
|
</dl>
|
|
</dl>
|
|
<h3>DESCRIPTION</h3>
|
|
<p>
|
|
The <strong>vm_inherit</strong> function sets the inheritance attribute
|
|
for a region within the
|
|
specified task's address space. The inheritance attribute determines
|
|
the type of
|
|
access established for child tasks at task creation.
|
|
<p>
|
|
Because inheritance applies to virtual pages, the specified <var>address</var>
|
|
and <var>size</var> are
|
|
rounded to page boundaries, as follows: the region starts at
|
|
the beginning of the
|
|
virtual page containing <var>address</var>; it ends at the end of the virtual
|
|
page containing
|
|
<var>address</var> + <var>size</var> - 1.
|
|
Because of this rounding to virtual page boundaries, the
|
|
amount of memory affected may be greater than <var>size</var>. Use
|
|
<strong>host_page_size</strong> to find the current virtual page size.
|
|
<p>
|
|
A parent and a child task can share the same physical memory only if the
|
|
inheritance for the memory is set to <strong>VM_INHERIT_SHARE</strong> before
|
|
the child task is
|
|
created. Other than through the use of an external memory manager (see
|
|
<strong>vm_map</strong>), this is the only way that two tasks can share memory.
|
|
<p>
|
|
Note that all the threads within a task share the task's memory.
|
|
<h3>NOTES</h3>
|
|
<p>
|
|
This interface is machine word length specific because of the virtual address
|
|
parameter.
|
|
<h3>RETURN VALUES</h3>
|
|
<dl>
|
|
<p>
|
|
<dt> <strong>KERN_INVALID_ADDRESS</strong>
|
|
<dd>
|
|
The address is illegal or specifies a non-allocated region.
|
|
</dl>
|
|
<h3>RELATED INFORMATION</h3>
|
|
<p>
|
|
Functions:
|
|
<a href="task_create.html"><strong>task_create</strong></a>,
|
|
<a href="vm_map.html"><strong>vm_map</strong></a>,
|
|
<a href="vm_region.html"><strong>vm_region</strong></a>,
|