2  * Copyright (c) 2000-2004 Apple Computer, Inc. All rights reserved. 
   4  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 
   6  * This file contains Original Code and/or Modifications of Original Code 
   7  * as defined in and that are subject to the Apple Public Source License 
   8  * Version 2.0 (the 'License'). You may not use this file except in 
   9  * compliance with the License. The rights granted to you under the License 
  10  * may not be used to create, or enable the creation or redistribution of, 
  11  * unlawful or unlicensed copies of an Apple operating system, or to 
  12  * circumvent, violate, or enable the circumvention or violation of, any 
  13  * terms of an Apple operating system software license agreement. 
  15  * Please obtain a copy of the License at 
  16  * http://www.opensource.apple.com/apsl/ and read it before using this file. 
  18  * The Original Code and all software distributed under the License are 
  19  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
  20  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
  21  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 
  22  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
  23  * Please see the License for the specific language governing rights and 
  24  * limitations under the License. 
  26  * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 
  32  * Mach Operating System 
  33  * Copyright (c) 1991,1990,1989,1988,1987 Carnegie Mellon University 
  34  * All Rights Reserved. 
  36  * Permission to use, copy, modify and distribute this software and its 
  37  * documentation is hereby granted, provided that both the copyright 
  38  * notice and this permission notice appear in all copies of the 
  39  * software, derivative works or modified versions, and any portions 
  40  * thereof, and that both notices appear in supporting documentation. 
  42  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" 
  43  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR 
  44  * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. 
  46  * Carnegie Mellon requests users of this software to return to 
  48  *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU 
  49  *  School of Computer Science 
  50  *  Carnegie Mellon University 
  51  *  Pittsburgh PA 15213-3890 
  53  * any improvements or extensions that they make and grant Carnegie Mellon 
  54  * the rights to redistribute these changes. 
  59 #ifndef _KERN_IPC_TT_H_ 
  60 #define _KERN_IPC_TT_H_ 
  62 #include <mach/boolean.h> 
  63 #include <mach/port.h> 
  64 #include <vm/vm_kern.h> 
  65 #include <kern/kern_types.h> 
  66 #include <kern/ipc_kobject.h> 
  67 #include <ipc/ipc_space.h> 
  68 #include <ipc/ipc_table.h> 
  69 #include <ipc/ipc_port.h> 
  70 #include <ipc/ipc_right.h> 
  71 #include <ipc/ipc_entry.h> 
  72 #include <ipc/ipc_object.h> 
  75 /* Initialize a task's IPC state */ 
  76 extern void ipc_task_init( 
  80 /* Enable a task for IPC access */ 
  81 extern void ipc_task_enable( 
  84 /* Disable IPC access to a task */ 
  85 extern void ipc_task_disable( 
  88 /* Clear out a task's IPC state */ 
  89 extern void ipc_task_reset( 
  92 /* Clean up and destroy a task's IPC state */ 
  93 extern void ipc_task_terminate( 
  96 /* Initialize a thread's IPC state */ 
  97 extern void ipc_thread_init( 
 100 /* Disable IPC access to a thread */ 
 101 extern void ipc_thread_disable( 
 104 /* Clean up and destroy a thread's IPC state */ 
 105 extern void ipc_thread_terminate( 
 108 /* Return a send right for the task's user-visible self port */ 
 109 extern ipc_port_t 
retrieve_task_self_fast( 
 112 /* Return a send right for the thread's user-visible self port */ 
 113 extern ipc_port_t 
retrieve_thread_self_fast( 
 116 /* Convert from a port to a task name */ 
 117 extern task_name_t 
convert_port_to_task_name( 
 120 /* Convert from a port to a task */ 
 121 extern task_t 
convert_port_to_task( 
 124 extern task_t 
port_name_to_task( 
 125         mach_port_name_t name
); 
 127 extern boolean_t 
ref_task_port_locked( 
 128         ipc_port_t port
, task_t 
*ptask
); 
 130 /* Convert from a port to a space */ 
 131 extern ipc_space_t 
convert_port_to_space( 
 134 extern boolean_t 
ref_space_port_locked( 
 135         ipc_port_t port
, ipc_space_t 
*pspace
); 
 137 /* Convert from a port to a map */ 
 138 extern vm_map_t 
convert_port_to_map( 
 141 /* Convert from a port to a thread */ 
 142 extern thread_t 
convert_port_to_thread( 
 145 extern thread_t 
port_name_to_thread( 
 146         mach_port_name_t        port_name
); 
 148 /* Convert from a task to a port */ 
 149 extern ipc_port_t 
convert_task_to_port( 
 152 /* Convert from a task name to a port */ 
 153 extern ipc_port_t 
convert_task_name_to_port( 
 154         task_name_t             task_name
); 
 156 /* Convert from a thread to a port */ 
 157 extern ipc_port_t       
convert_thread_to_port( 
 160 /* Deallocate a space ref produced by convert_port_to_space */ 
 161 extern void space_deallocate( 
 164 #endif  /* _KERN_IPC_TT_H_ */