1<h2>mach_port_allocate_full</h2> 2<hr> 3<p> 4<strong>Function</strong> - Create a port right with full Mach port semantics. 5<h3>SYNOPSIS</h3> 6<pre> 7<strong>kern_return_t mach_port_allocate_full</strong> 8 <strong>(ipc_space_t</strong> <var>task</var>, 9 <strong>mach_port_right_t</strong> <var>right</var>, 10 <strong>subsystem_t</strong> <var>subsystem</var>, 11 <strong>mach_port_qos_t</strong> <var>qos</var>, 12 <strong>task</strong> <var>name</var><strong>);</strong> 13</pre> 14<h3>PARAMETERS</h3> 15<dl> 16<p> 17<dt> <var>task</var> 18<dd> 19[in task send right] The task acquiring the port right. 20<p> 21<dt> <var>right</var> 22<dd> 23[in scalar] The 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_full</strong> creates a port. The new port is not a member 29of any port set. It doesn't have any extant send or send-once 30rights. Its make-send count is zero, its sequence number is zero, its 31queue limit is MACH_PORT_QLIMIT_DEFAULT, and it has no queued 32messages. The <var>name</var> parameter 33denotes the receive right for the new port. 34The owning task does not hold send rights for the new port, only the receive 35right. The <strong>mach_port_insert_right</strong> 36and <strong>mach_port_extract_right</strong> interfaces can be used 37to convert the receive right to a combined send/receive right. 38<p> 39<dt> <strong>MACH_PORT_RIGHT_PORT_SET</strong> 40<dd> 41<strong>mach_port_allocate_full</strong> creates a port set. The new port set 42has no members. 43<p> 44<dt> <strong>MACH_PORT_RIGHT_DEAD_NAME</strong> 45<dd> 46<strong>mach_port_allocate_full</strong> creates a dead name. The new dead 47name has one user reference. 48</dl> 49<p> 50<dt> <var>subsystem</var> 51<dd> 52[in scalar] The port right naming the subsystem the newly created port 53is to be associated with. 54<p> 55<p> 56<dt> <var>qos</var> 57<dd> 58[pointer to an in/out structure] Structure used to specify 59the desired "quality of service." This structure may be used 60to mandate the name of the returned port right and/or the port's "quality 61of service" attribute. The current implementation recognizes two such 62attributes: regular and realtime. 63<dt> <var>name</var> 64<dd> 65[out scalar] The task's name for the port right. This can be any name 66that wasn't in use. 67</dl> 68<h3>DESCRIPTION</h3> 69<p> 70The <strong>mach_port_allocate_full</strong> function creates a new right in the 71specified task. The new right's name is returned via the <var>name</var> parameter. 72The new port supports the full set of Mach port semantics (i.e. no_more_senders 73detection will work, if requested). 74<h3>NOTES</h3> 75<p> 76This interface is machine word length specific because of the port 77name parameter. 78<h3>RETURN VALUES</h3> 79<dl> 80<p> 81<dt> <strong>KERN_NO_SPACE</strong> 82<dd> 83There was no room in task's IPC name space for another right. 84</dl> 85<h3>RELATED INFORMATION</h3> 86<p> 87Functions: 88<a href="mach_port_allocate.html"><strong>mach_port_allocate</strong></a>, 89<a href="mach_port_allocate.html"><strong>mach_port_allocate_qos</strong></a>, 90<a href="mach_port_allocate_name.html"><strong>mach_port_allocate_name</strong></a>, 91<a href="mach_port_deallocate.html"><strong>mach_port_deallocate</strong></a>, 92<a href="mach_port_insert_right.html"><strong>mach_port_insert_right</strong></a>, 93<a href="mach_port_extract_right.html"><strong>mach_port_extract_right</strong></a>. 94<p> 95Structures: 96<a href="mach_port_qos.html"><strong>mach_port_qos</strong></a>. 97