]> git.saurik.com Git - apple/xnu.git/blame - osfmk/man/mach_port_allocate.html
xnu-2422.1.72.tar.gz
[apple/xnu.git] / osfmk / man / mach_port_allocate.html
CommitLineData
13fec989
A
1<h2>mach_port_allocate</h2>
2<hr>
3<p>
4<strong>Function</strong> - Create caller-specified type of port right.
5<h3>SYNOPSIS</h3>
6<pre>
7<strong>kern_return_t mach_port_allocate</strong>
8 <strong>(ipc_space_t</strong> <var>task</var>,
9 <strong>mach_port_right_t</strong> <var>right</var>,
10 <strong>mach_port_name_t</strong> <var>*name</var><strong>);</strong>
11</pre>
12<h3>PARAMETERS</h3>
13<dl>
14<p>
15<dt> <var>task</var>
16<dd>
17[in task send right]
18The task acquiring the port right.
19<p>
20<dt> <var>right</var>
21<dd>
22[in scalar]
23The kind of entity to be created. This is one of the following:
24<dl>
25<p>
26<dt> <strong>MACH_PORT_RIGHT_RECEIVE</strong>
27<dd>
28<strong>mach_port_allocate</strong> creates a port. The new port is not a
29member of any port set. It doesn't have any extant send or
30send-once rights. Its make-send count is zero, its sequence
31number is zero, its queue limit is <strong>MACH_PORT_QLIMIT_DEFAULT</strong>, and
32it has no queued messages. <var>name</var> denotes the
33receive right for the new port.
34<var>task</var> does not hold send rights for the new port, only the
35receive right. <strong>mach_port_insert_right</strong> and
36<strong>mach_port_extract_right</strong> can be used to convert the receive right into a
37combined send/receive right.
38<p>
39<dt> <strong>MACH_PORT_RIGHT_PORT_SET</strong>
40<dd>
41<strong>mach_port_allocate</strong> creates a port set. The new port set has
42no members.
43<p>
44<dt> <strong>MACH_PORT_RIGHT_DEAD_NAME</strong>
45<dd>
46<strong>mach_port_allocate</strong> creates a dead name. The new dead
47name has one user reference.
48</dl>
49<p>
50<dt> <var>name</var>
51<dd>
52[out scalar]
53The task's name for the port right. This can be any name
54that wasn't in use.
55</dl>
56<h3>DESCRIPTION</h3>
57<p>
58The <strong>mach_port_allocate</strong> function creates a new right
59in the specified task. The new right's name is returned in name.
60<p>
61Ports that are allocated via this call do not support the full set of
62Mach port semantics; in particular, the kernel will not provide no-more-senders
63notification service requests on such ports. Any attempt to request no-more-senders
64notification service
65will generate an error. Use the <strong>mach_port_allocate_full</strong>
66interface to allocate ports that support the full set of Mach port semantics.
67<h3>NOTES</h3>
68<p>
69This interface is machine word length specific because of the port name
70parameter.
71<h3>RETURN VALUES</h3>
72<dl>
73<p>
74<dt> <strong>KERN_NO_SPACE</strong>
75<dd>
76There was no room in task's IPC name space for another right.
77</dl>
78<h3>RELATED INFORMATION</h3>
79<p>
80Functions:
81<a href="mach_port_allocate_name.html"><strong>mach_port_allocate_name</strong></a>,
82<a href="mach_port_deallocate.html"><strong>mach_port_deallocate</strong></a>,
83<a href="mach_port_insert_right.html"><strong>mach_port_insert_right</strong></a>,
84<a href="mach_port_extract_right.html"><strong>mach_port_extract_right</strong></a>.