1<h2>task_get_special_port</h2>
2<hr>
3<p>
4<strong>Function</strong> - Return a send write to the indicated special port.
5<h3>SYNOPSIS</h3>
6<pre>
7<strong>kern_return_t   task_get_special_port</strong>
8                <strong>(task_t</strong>                                    <var>task</var>,
9                 <strong>int</strong>                                 <var>which_port</var>,
10                 <strong>task</strong>                              <var>special_port</var><strong>);</strong>
11
12
13<strong>Macro Forms:</strong>
14
15
16<strong>kern_return_t   task_get_bootstrap_port</strong>
17                <strong>(task_t</strong>                                    <var>task</var>,
18                 <strong>task</strong>                              <var>special_port</var><strong>);</strong>
19
20
21<strong>kern_return_t   task_get_kernel_port</strong>
22                <strong>(task_t</strong>                                    <var>task</var>,
23                 <strong>task</strong>                              <var>special_port</var><strong>);</strong>
24
25
26<strong>kern_return_t   task_get_host_name_port</strong>
27                <strong>(task_t</strong>                                    <var>task</var>,
28                 <strong>task</strong>                              <var>special_port</var><strong>);</strong>
29</pre>
30<h3>PARAMETERS</h3>
31<dl>
32<p>
33<dt> <var>task</var> 
34<dd>
35[in task send right]
36The port for the task for which to return the port's 
37send right.
38<p>
39<dt> <var>which_port</var> 
40<dd>
41[in scalar]
42The special port for which the send right is requested.  Valid 
43values are:
44<dl>
45<p>
46<dt> <strong>TASK_KERNEL_PORT</strong>
47<dd>
48[task-self send right] The port used to control this task.  Used 
49to send messages that affect the task.  This is the port returned 
50by <strong>mach_task_self</strong>.
51<p>
52<dt> <strong>TASK_BOOTSTRAP_PORT</strong>
53<dd>
54[bootstrap send right] The task's bootstrap port.  Used to send 
55messages requesting return of other system service ports.
56<p>
57<dt> <strong>TASK_HOST_NAME_PORT</strong>
58<dd>
59[host-self send right] The port used to request information of 
60the containing host.  This is the port returned by
61<strong>mach_host_self</strong>.
62<p>
63<dt> <strong>TASK_WIRED_LEDGER_PORT</strong>
64<dd>
65[ledger send right] The port naming the source from which 
66this task draws its wired kernel memory.
67<p>
68<dt> <strong>TASK_PAGED_LEDGER_PORT</strong>
69<dd>
70[ledger send right] The port naming the source from which 
71this task draws its default memory managed memory.
72</dl>
73<p>
74<dt> <var>special_port</var> 
75<dd>
76[out task-special send right]
77The returned value for the port.
78</dl>
79<h3>DESCRIPTION</h3>
80<p>
81The <strong>task_get_special_port</strong> function returns a send right
82for a special port belonging to <var>task</var>.
83<p>
84If one task has a send right for the kernel port of another task, it can use 
85the port to perform kernel operations for the other task.  Send rights for a 
86kernel port normally are held only by the task to which the port belongs,
87or by the task's parent task.  Using the <strong>mach_msg</strong> function, however, 
88any task can pass a send right for its kernel port to another task.
89<h3>NOTES</h3>
90<p>
91The current implementation does not support the <strong>TASK_HOST_NAME_PORT</strong>
92features associated with this interface.
93<h3>RETURN VALUES</h3>
94<p>
95Only generic errors apply.
96<h3>RELATED INFORMATION</h3>
97<p>
98Functions:
99<a href="mach_task_self.html"><strong>mach_task_self</strong></a>,
100<a href="task_create.html"><strong>task_create</strong></a>,
101<a href="task_set_special_port.html"><strong>task_set_special_port</strong></a>,
102<a href="thread_get_special_port.html"><strong>thread_get_special_port</strong></a>,
103<a href="thread_set_special_port.html"><strong>thread_set_special_port</strong></a>,
104<a href="mach_host_self.html"><strong>mach_host_self</strong></a>.
105