1/* 2 * Copyright (c) 2000-2004 Apple Computer, Inc. All rights reserved. 3 * 4 * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 5 * 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. 14 * 15 * Please obtain a copy of the License at 16 * http://www.opensource.apple.com/apsl/ and read it before using this file. 17 * 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. 25 * 26 * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 27 */ 28/* 29 * @OSF_COPYRIGHT@ 30 */ 31/* 32 * Mach Operating System 33 * Copyright (c) 1991,1990,1989,1988,1987 Carnegie Mellon University 34 * All Rights Reserved. 35 * 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. 41 * 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. 45 * 46 * Carnegie Mellon requests users of this software to return to 47 * 48 * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU 49 * School of Computer Science 50 * Carnegie Mellon University 51 * Pittsburgh PA 15213-3890 52 * 53 * any improvements or extensions that they make and grant Carnegie Mellon 54 * the rights to redistribute these changes. 55 */ 56/* 57 */ 58 59#ifndef _KERN_IPC_TT_H_ 60#define _KERN_IPC_TT_H_ 61 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> 73 74 75/* Initialize a task's IPC state */ 76extern void ipc_task_init( 77 task_t task, 78 task_t parent); 79 80/* Enable a task for IPC access */ 81extern void ipc_task_enable( 82 task_t task); 83 84/* Disable IPC access to a task */ 85extern void ipc_task_disable( 86 task_t task); 87 88/* Clear out a task's IPC state */ 89extern void ipc_task_reset( 90 task_t task); 91 92/* Clean up and destroy a task's IPC state */ 93extern void ipc_task_terminate( 94 task_t task); 95 96/* Initialize a thread's IPC state */ 97extern void ipc_thread_init( 98 thread_t thread); 99 100/* Disable IPC access to a thread */ 101extern void ipc_thread_disable( 102 thread_t thread); 103 104/* Clean up and destroy a thread's IPC state */ 105extern void ipc_thread_terminate( 106 thread_t thread); 107 108/* Clear out a thread's IPC state */ 109extern void ipc_thread_reset( 110 thread_t thread); 111 112/* Return a send right for the task's user-visible self port */ 113extern ipc_port_t retrieve_task_self_fast( 114 task_t task); 115 116/* Return a send right for the thread's user-visible self port */ 117extern ipc_port_t retrieve_thread_self_fast( 118 thread_t thread); 119 120/* Convert from a port to a task name */ 121extern task_name_t convert_port_to_task_name( 122 ipc_port_t port); 123 124/* Convert from a port to a task */ 125extern task_t convert_port_to_task( 126 ipc_port_t port); 127 128extern task_t port_name_to_task( 129 mach_port_name_t name); 130 131extern boolean_t ref_task_port_locked( 132 ipc_port_t port, task_t *ptask); 133 134/* Convert from a port to a space */ 135extern ipc_space_t convert_port_to_space( 136 ipc_port_t port); 137 138extern boolean_t ref_space_port_locked( 139 ipc_port_t port, ipc_space_t *pspace); 140 141/* Convert from a port to a map */ 142extern vm_map_t convert_port_to_map( 143 ipc_port_t port); 144 145/* Convert from a port to a thread */ 146extern thread_t convert_port_to_thread( 147 ipc_port_t port); 148 149extern thread_t port_name_to_thread( 150 mach_port_name_t port_name); 151 152/* Deallocate a space ref produced by convert_port_to_space */ 153extern void space_deallocate( 154 ipc_space_t space); 155 156#endif /* _KERN_IPC_TT_H_ */ 157