## task_get_special_port

Function - Return a send write to the indicated special port.

### SYNOPSIS

    kern_return_t   task_get_special_port
                    (task_t                                    task,
                     int                                 which_port,
                     task                              special_port);

    Macro Forms:

    kern_return_t   task_get_bootstrap_port
                    (task_t                                    task,
                     task                              special_port);

    kern_return_t   task_get_kernel_port
                    (task_t                                    task,
                     task                              special_port);

    kern_return_t   task_get_host_name_port
                    (task_t                                    task,
                     task                              special_port);

### PARAMETERS

task
  [in task send right] The port for the task for which to return the port's send right.

which_port
  [in scalar] The special port for which the send right is requested. Valid values are:

  TASK_KERNEL_PORT
    [task-self send right] The port used to control this task. Used to send messages that affect the task. This is the movable task port and different from the one returned by mach_task_self (immovable).

  TASK_BOOTSTRAP_PORT
    [bootstrap send right] The task's bootstrap port. Used to send messages requesting return of other system service ports.

  TASK_HOST_NAME_PORT
    [host-self send right] The port used to request information of the containing host. This is the port returned by mach_host_self.

  TASK_WIRED_LEDGER_PORT
    [ledger send right] The port naming the source from which this task draws its wired kernel memory.

  TASK_PAGED_LEDGER_PORT
    [ledger send right] The port naming the source from which this task draws its default memory managed memory.

special_port
  [out task-special send right] The returned value for the port.

### DESCRIPTION

The task_get_special_port function returns a send right for a special port belonging to task.

If one task has a send right for the kernel port of another task, it can use the port to perform kernel operations for the other task. Send rights for a kernel port normally are held only by the task to which the port belongs, or by the task's parent task. Using the mach_msg function, however, any task can pass a send right for its kernel port to another task.

### NOTES

The current implementation does not support the TASK_HOST_NAME_PORT features associated with this interface.

### RETURN VALUES

Only generic errors apply.

### RELATED INFORMATION

Functions: mach_task_self, task_create, task_set_special_port, thread_get_special_port, thread_set_special_port, mach_host_self.