This is a
mach_port_tand used to hold the port name of a host name port (or short: host port). Any task can get a send right to the name port of the host running the task using the
mach_host_selfsystem call. The name port can be used query information about the host, for example the current time.
mach_host_selfsystem call returns the calling thread's host name port. It has an effect equivalent to receiving a send right for the host port.
mach_host_selfreturns the name of the send right. In particular, successive calls will increase the calling task's user-reference count for the send right.
As a special exception, the kernel will overrun the user reference count of the host name port, so that this function can not fail for that reason. Because of this, the user should not deallocate the port right if an overrun might have happened. Otherwise the reference count could drop to zero and the send right be destroyed while the user still expects to be able to use it. As the kernel does not make use of the number of extant send rights anyway, this is safe to do (the host port itself is never destroyed).
The function returns
MACH_PORT_NULLif a resource shortage prevented the reception of the send right.
This function is also available in mach/mach_traps.h.
This is a
mach_port_tand used to hold the port name of a privileged host control port. A send right to the host control port is inserted into the first task at bootstrap (see Modules). This is the only way to get access to the host control port in Mach, so the initial task has to preserve the send right carefully, moving a copy of it to other privileged tasks if necessary and denying access to unprivileged tasks.