2 * Copyright (c) 2000-2004 Apple Computer, Inc. All rights reserved.
4 * @APPLE_LICENSE_OSREFERENCE_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
10 * License may not be used to create, or enable the creation or
11 * redistribution of, unlawful or unlicensed copies of an Apple operating
12 * system, or to circumvent, violate, or enable the circumvention or
13 * violation of, any terms of an Apple operating system software license
16 * Please obtain a copy of the License at
17 * http://www.opensource.apple.com/apsl/ and read it before using this
20 * The Original Code and all software distributed under the License are
21 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
22 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
23 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
24 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
25 * Please see the License for the specific language governing rights and
26 * limitations under the License.
28 * @APPLE_LICENSE_OSREFERENCE_HEADER_END@
34 * Mach Operating System
35 * Copyright (c) 1991,1990,1989,1988,1987 Carnegie Mellon University
36 * All Rights Reserved.
38 * Permission to use, copy, modify and distribute this software and its
39 * documentation is hereby granted, provided that both the copyright
40 * notice and this permission notice appear in all copies of the
41 * software, derivative works or modified versions, and any portions
42 * thereof, and that both notices appear in supporting documentation.
44 * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
45 * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
46 * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
48 * Carnegie Mellon requests users of this software to return to
50 * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
51 * School of Computer Science
52 * Carnegie Mellon University
53 * Pittsburgh PA 15213-3890
55 * any improvements or extensions that they make and grant Carnegie Mellon
56 * the rights to redistribute these changes.
61 #ifndef _KERN_IPC_TT_H_
62 #define _KERN_IPC_TT_H_
64 #include <mach/boolean.h>
65 #include <mach/port.h>
66 #include <vm/vm_kern.h>
67 #include <kern/kern_types.h>
68 #include <kern/ipc_kobject.h>
69 #include <ipc/ipc_space.h>
70 #include <ipc/ipc_table.h>
71 #include <ipc/ipc_port.h>
72 #include <ipc/ipc_right.h>
73 #include <ipc/ipc_entry.h>
74 #include <ipc/ipc_object.h>
77 /* Initialize a task's IPC state */
78 extern void ipc_task_init(
82 /* Enable a task for IPC access */
83 extern void ipc_task_enable(
86 /* Disable IPC access to a task */
87 extern void ipc_task_disable(
90 /* Clear out a task's IPC state */
91 extern void ipc_task_reset(
94 /* Clean up and destroy a task's IPC state */
95 extern void ipc_task_terminate(
98 /* Initialize a thread's IPC state */
99 extern void ipc_thread_init(
102 /* Disable IPC access to a thread */
103 extern void ipc_thread_disable(
106 /* Clean up and destroy a thread's IPC state */
107 extern void ipc_thread_terminate(
110 /* Return a send right for the task's user-visible self port */
111 extern ipc_port_t
retrieve_task_self_fast(
114 /* Return a send right for the thread's user-visible self port */
115 extern ipc_port_t
retrieve_thread_self_fast(
118 /* Convert from a port to a task */
119 extern task_t
convert_port_to_task(
122 extern task_t
port_name_to_task(
123 mach_port_name_t name
);
125 extern boolean_t
ref_task_port_locked(
126 ipc_port_t port
, task_t
*ptask
);
128 /* Convert from a port to a space */
129 extern ipc_space_t
convert_port_to_space(
132 extern boolean_t
ref_space_port_locked(
133 ipc_port_t port
, ipc_space_t
*pspace
);
135 /* Convert from a port to a map */
136 extern vm_map_t
convert_port_to_map(
139 /* Convert from a port to a thread */
140 extern thread_t
convert_port_to_thread(
143 extern thread_t
port_name_to_thread(
144 mach_port_name_t port_name
);
146 /* Convert from a task to a port */
147 extern ipc_port_t
convert_task_to_port(
150 /* Convert from a thread to a port */
151 extern ipc_port_t
convert_thread_to_port(
154 /* Deallocate a space ref produced by convert_port_to_space */
155 extern void space_deallocate(
158 #endif /* _KERN_IPC_TT_H_ */