|
|
1.1 root 1: /*
2: * Copyright (c) 2000 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: * HISTORY
27: *
28: * Revision 1.1.1.1 1998/09/22 21:05:30 wsanchez
29: * Import of Mac OS X kernel (~semeria)
30: *
31: * Revision 1.1.1.1 1998/03/07 02:25:45 wsanchez
32: * Import of OSF Mach kernel (~mburg)
33: *
34: * Revision 1.3.17.2 1994/09/23 02:38:45 ezf
35: * change marker to not FREE
36: * [1994/09/22 21:40:54 ezf]
37: *
38: * Revision 1.3.17.1 1994/06/13 20:49:36 dlb
39: * Merge MK6 and NMK17
40: * [1994/06/13 20:47:52 dlb]
41: *
42: * Revision 1.3.11.1 1994/02/08 11:01:11 bernadat
43: * Checked in NMK16_1 changes
44: * [94/02/04 bernadat]
45: *
46: * Revision 1.3.4.2 1993/07/22 13:54:29 bernadat
47: * [Joe Barerra: [email protected]] Added norma_task_teleport as
48: * an alternative migration mechanism.
49: * Change from NORMA_MK14.6 [93/03/08 sjs]
50: * [93/07/16 bernadat]
51: *
52: * Revision 1.3.2.2 1993/06/02 23:45:24 jeffc
53: * Added to OSF/1 R1.3 from NMK15.0.
54: * [1993/06/02 21:16:50 jeffc]
55: *
56: * Revision 1.3 1992/12/07 21:29:17 robert
57: * integrate any changes below for 14.0 (branch from 13.16 base)
58: *
59: * Joseph Barrera (jsb) at Carnegie-Mellon University 03-Jul-92
60: * Added norma_task_clone to support task migration.
61: * [1992/12/06 20:25:30 robert]
62: *
63: * Revision 1.2 1992/11/25 01:13:00 robert
64: * fix history
65: * [1992/11/09 21:25:21 robert]
66: *
67: * integrate changes below for norma_14
68: * [1992/11/09 16:42:52 robert]
69: *
70: * Revision 0.0 92/10/02 dwm
71: * Add Comment: norma_port_location_hint requires send rights on 'port'.
72: *
73: * Revision 1.1 1992/11/05 20:59:18 robert
74: * Initial revision
75: * [92/10/02 dwm]
76: *
77: * $EndLog$
78: */
79: /* CMU_HIST */
80: /*
81: * Revision 2.6 91/12/13 13:45:12 jsb
82: * Moved non-exported interfaces to norma/norma_internal.defs.
83: * Changed name of task_create_remote to norma_task_create.
84: * Added comments.
85: *
86: * Revision 2.5 91/11/14 16:56:43 rpd
87: * Picked up mysterious norma changes.
88: * [91/11/14 rpd]
89: *
90: * Revision 2.4 91/08/28 11:15:08 jsb
91: * Added KERNEL_USER definitions.
92: * Removed norma_set_task_server.
93: * Added task_create_remote, norma_copy_create.
94: * [91/08/15 13:28:27 jsb]
95: *
96: * Revision 2.3 91/08/03 18:19:02 jsb
97: * Removed norma_get_{host,host_priv,device}_port;
98: * Use norma_{get,set}_special_port instead.
99: * [91/07/25 07:51:11 jsb]
100: *
101: * Revision 2.2 91/06/06 17:07:57 jsb
102: * First checkin.
103: * [91/05/25 10:37:22 jsb]
104: *
105: */
106: /* CMU_ENDHIST */
107: /*
108: * Mach Operating System
109: * Copyright (c) 1991 Carnegie Mellon University
110: * All Rights Reserved.
111: *
112: * Permission to use, copy, modify and distribute this software and its
113: * documentation is hereby granted, provided that both the copyright
114: * notice and this permission notice appear in all copies of the
115: * software, derivative works or modified versions, and any portions
116: * thereof, and that both notices appear in supporting documentation.
117: *
118: * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
119: * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
120: * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
121: *
122: * Carnegie Mellon requests users of this software to return to
123: *
124: * Software Distribution Coordinator or [email protected]
125: * School of Computer Science
126: * Carnegie Mellon University
127: * Pittsburgh PA 15213-3890
128: *
129: * any improvements or extensions that they make and grant Carnegie Mellon
130: * the rights to redistribute these changes.
131: */
132: /*
133: */
134:
135: subsystem
136: #if KERNEL_USER
137: KernelUser
138: #endif KERNEL_USER
139: #if KERNEL_SERVER
140: KernelServer
141: #endif KERNEL_SERVER
142: mach_norma 555000;
143: #ifdef KERNEL_USER
144: userprefix r_;
145: #endif KERNEL_USER
146:
147: #include <mach/std_types.defs>
148: #include <mach/mach_types.defs>
149:
150: skip;
151:
152: /*
153: * Specify a node upon which children tasks will be created.
154: * This call exists only to allow testing with unmodified servers.
155: * Server developers should use norma_task_create instead.
156: */
157: routine task_set_child_node(
158: target_task : task_t;
159: child_node : int);
160:
161: /*
162: * THIS CALL WILL BE ELIMINATED.
163: * Use norma_port_location_hint(,mach_task_self(),) instead.
164: */
165: routine norma_node_self(
166: host : host_t;
167: out node : int);
168:
169: skip;
170:
171: skip;
172:
173: /*
174: * Create a task on the given node, possibly inheriting memory.
175: * Same inheritance semantics as task_create, including inheritance
176: * of initial ports and emulation library, except for memory:
177: * inheritance attributes are ignored, so that all regions appear
178: * in the child task, shared with the parent, until the parent
179: * is destroyed. (The inheritance of the regions in the child
180: * will, however, be set to match the parent.)
181: *
182: * This call is intended to support process migration, where the
183: * inheritance semantics of norma_task_create would break migrated
184: * programs that depended upon sharing relationships remaining
185: * after migration.
186: *
187: * This call is not a true task migration call, in that it does not
188: * migrate the port space, threads, and other non-address-space
189: * attributes of the task.
190: */
191: routine norma_task_clone(
192: target_task : task_t;
193: inherit_memory : boolean_t;
194: child_node : int;
195: out child_task : task_t);
196:
197: /*
198: * Create a task on the given node, possibly inheriting memory.
199: * Same inheritance semantics as task_create, including inheritance
200: * of initial ports and emulation library.
201: * Setting child_node to node_self forces local task creation.
202: */
203: routine norma_task_create(
204: target_task : task_t;
205: inherit_memory : boolean_t;
206: child_node : int;
207: out child_task : task_t);
208:
209: /*
210: * Get a given special port for a given node.
211: * Norma special ports are defined in norma_special_ports.h;
212: * examples include the master device port.
213: * There are a limited number of slots available for system servers.
214: */
215: routine norma_get_special_port(
216: host_priv : host_priv_t;
217: node : int;
218: which : int;
219: out port : mach_port_t);
220:
221: /*
222: * Set a given special port for a given node.
223: * See norma_get_special_port.
224: */
225: routine norma_set_special_port(
226: host_priv : host_priv_t;
227: which : int;
228: port : mach_port_t);
229:
230: /*
231: * Just like norma_task_clone, except target_task is terminated,
232: * allowing useful VM optimizations.
233: */
234: routine norma_task_teleport(
235: target_task : task_t;
236: inherit_memory : boolean_t;
237: child_node : int;
238: out child_task : task_t);
239:
240: skip;
241:
242: skip;
243:
244: /*
245: * Return best guess of port's current location.
246: * Guaranteed to be a node where the port once was.
247: * Guaranteed to be accurate if port has never moved.
248: * Can be used to determine residence node for hosts, tasks, threads, etc.
249: */
250: routine norma_port_location_hint(
251: task : task_t;
252: port : mach_port_t;
253: out node : int);
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.