1/* 2 * Copyright (c) 2000-2004 Apple Computer, Inc. All rights reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * The contents of this file constitute Original Code as defined in and 7 * are subject to the Apple Public Source License Version 1.1 (the 8 * "License"). You may not use this file except in compliance with the 9 * License. Please obtain a copy of the License at 10 * http://www.apple.com/publicsource and read it before using this file. 11 * 12 * This Original Code and all software distributed under the License are 13 * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER 14 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 15 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 16 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the 17 * License for the specific language governing rights and limitations 18 * under the License. 19 * 20 * @APPLE_LICENSE_HEADER_END@ 21 */ 22/* 23 * @OSF_COPYRIGHT@ 24 */ 25/* 26 * Mach Operating System 27 * Copyright (c) 1991,1990,1989,1988,1987 Carnegie Mellon University 28 * All Rights Reserved. 29 * 30 * Permission to use, copy, modify and distribute this software and its 31 * documentation is hereby granted, provided that both the copyright 32 * notice and this permission notice appear in all copies of the 33 * software, derivative works or modified versions, and any portions 34 * thereof, and that both notices appear in supporting documentation. 35 * 36 * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" 37 * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR 38 * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. 39 * 40 * Carnegie Mellon requests users of this software to return to 41 * 42 * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU 43 * School of Computer Science 44 * Carnegie Mellon University 45 * Pittsburgh PA 15213-3890 46 * 47 * any improvements or extensions that they make and grant Carnegie Mellon 48 * the rights to redistribute these changes. 49 */ 50/* 51 */ 52 53#ifndef _KERN_IPC_TT_H_ 54#define _KERN_IPC_TT_H_ 55 56#include <mach/boolean.h> 57#include <mach/port.h> 58#include <vm/vm_kern.h> 59#include <kern/kern_types.h> 60#include <kern/ipc_kobject.h> 61#include <ipc/ipc_space.h> 62#include <ipc/ipc_table.h> 63#include <ipc/ipc_port.h> 64#include <ipc/ipc_right.h> 65#include <ipc/ipc_entry.h> 66#include <ipc/ipc_object.h> 67 68 69/* Initialize a task's IPC state */ 70extern void ipc_task_init( 71 task_t task, 72 task_t parent); 73 74/* Enable a task for IPC access */ 75extern void ipc_task_enable( 76 task_t task); 77 78/* Disable IPC access to a task */ 79extern void ipc_task_disable( 80 task_t task); 81 82/* Clear out a task's IPC state */ 83extern void ipc_task_reset( 84 task_t task); 85 86/* Clean up and destroy a task's IPC state */ 87extern void ipc_task_terminate( 88 task_t task); 89 90/* Initialize a thread's IPC state */ 91extern void ipc_thread_init( 92 thread_t thread); 93 94/* Disable IPC access to a thread */ 95extern void ipc_thread_disable( 96 thread_t thread); 97 98/* Clean up and destroy a thread's IPC state */ 99extern void ipc_thread_terminate( 100 thread_t thread); 101 102/* Return a send right for the task's user-visible self port */ 103extern ipc_port_t retrieve_task_self_fast( 104 task_t task); 105 106/* Return a send right for the thread's user-visible self port */ 107extern ipc_port_t retrieve_thread_self_fast( 108 thread_t thread); 109 110/* Convert from a port to a task */ 111extern task_t convert_port_to_task( 112 ipc_port_t port); 113 114extern task_t port_name_to_task( 115 mach_port_name_t name); 116 117extern boolean_t ref_task_port_locked( 118 ipc_port_t port, task_t *ptask); 119 120/* Convert from a port to a space */ 121extern ipc_space_t convert_port_to_space( 122 ipc_port_t port); 123 124extern boolean_t ref_space_port_locked( 125 ipc_port_t port, ipc_space_t *pspace); 126 127/* Convert from a port to a map */ 128extern vm_map_t convert_port_to_map( 129 ipc_port_t port); 130 131/* Convert from a port to a thread */ 132extern thread_t convert_port_to_thread( 133 ipc_port_t port); 134 135extern thread_t port_name_to_thread( 136 mach_port_name_t port_name); 137 138/* Convert from a task to a port */ 139extern ipc_port_t convert_task_to_port( 140 task_t task); 141 142/* Convert from a thread to a port */ 143extern ipc_port_t convert_thread_to_port( 144 thread_t thread); 145 146/* Deallocate a space ref produced by convert_port_to_space */ 147extern void space_deallocate( 148 ipc_space_t space); 149 150#endif /* _KERN_IPC_TT_H_ */ 151

