task_set_emulation_vector.html   [plain text]


<h2>task_set_emulation_vector</h2>
<hr>
<p>
<strong>Function</strong> - Establish the target task's user-level system call handlers. 
<h3>SYNOPSIS</h3>
<pre>
<strong>kern_return_t   task_set_emulation_vector</strong>
                <strong>(task_t</strong>                                    <var>task</var>,
                 <strong>int</strong>                               <var>vector_start</var>,
                 <strong>emulation_vector_t</strong>            <var>emulation_vector</var>,
                 <strong>mach_msg_type_number_t</strong>  <var>emulation_vector_count</var><strong>);</strong>
</pre>
<h3>PARAMETERS</h3>
<dl>
<p>
<dt> <var>task</var> 
<dd>
[in task send right]
The port for the task for which to establish the
system call handler.
<p>
<dt> <var>vector_start</var> 
<dd>
[in scalar]
The syscall number corresponding to the first element of
<var>emulation_vector</var>.
<p>
<dt> <var>emulation_vector</var> 
<dd>
[pointer to in array of <strong>vm_address_t</strong>]
An array of routine entrypoints 
for the system calls starting with syscall number <var>vector_start</var>.
<p>
<dt> <var>emulation_vector_count</var> 
<dd>
[in scalar]
The number of elements in <var>emulation_vector</var>.
</dl>
<h3>DESCRIPTION</h3>
<p>
The <strong>task_set_emulation_vector</strong> function establishes
a handler within the task 
for a set of system calls.  When a thread executes a system call
with one of these 
numbers, the system call will be redirected to the corresponding
routine within 
the task's address space.
<p>
These emulation handler addresses are inherited by child processes.
<h3>NOTES</h3>
<p>
This interface is machine word length specific because of the
virtual addresses 
in the <var>emulation_vector</var> parameter.
<h3>RETURN VALUES</h3>
<p>
Only generic errors apply.
<h3>RELATED INFORMATION</h3>
<p>
Functions:
<a href="task_get_emulation_vector.html"><strong>task_get_emulation_vector</strong></a>.