|
|
1.1 root 1: /*
2: * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
3: *
4: * @APPLE_LICENSE_HEADER_START@
5: *
6: * Portions Copyright (c) 1999 Apple Computer, Inc. All Rights
7: * Reserved. This file contains Original Code and/or Modifications of
8: * Original Code as defined in and that are subject to the Apple Public
9: * Source License Version 1.1 (the "License"). You may not use this file
10: * except in compliance with the License. Please obtain a copy of the
11: * License at http://www.apple.com/publicsource and read it before using
12: * this file.
13: *
14: * The Original Code and all software distributed under the License are
15: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
16: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
17: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
18: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
19: * License for the specific language governing rights and limitations
20: * under the License.
21: *
22: * @APPLE_LICENSE_HEADER_END@
23: */
24:
25: /*
26: * Mach Operating System
27: * Copyright (c) 1991,1990,1989 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 [email protected]
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: * HISTORY
52: * $Log: mach_host.defs,v $
53: * Revision 1.2.218.4 1999/03/16 17:05:39 wsanchez
54: * Substitute License
55: *
56: * Revision 1.2.218.3 1999/03/16 15:28:02 wsanchez
57: * Substitute copyright
58: *
59: * Revision 1.2.218.2 1999/03/16 10:37:38 umeshv
60: * Fixed errors in previous commit.
61: *
62: * Revision 1.2.218.1 1999/03/11 09:52:49 umeshv
63: * Added copyrights.
64: *
65: * Revision 1.2 1998/11/25 19:39:12 wsanchez
66: * Merged in PR-2288345 (mwatson: mach_host.defs id's offset by one)
67: *
68: * Revision 1.1.1.1.440.1 1998/11/24 19:30:54 mwatson
69: * Remove unused routine, now that -DNeXT is gone.
70: *
71: * Revision 1.1.1.1 1997/09/30 02:44:50 wsanchez
72: * Import of kernel from umeshv/kernel
73: *
74: * Revision 2.10 92/03/10 16:26:54 jsb
75: * From [email protected]: added host_get_boot_info.
76: * [92/01/08 15:01:12 jsb]
77: *
78: * Revision 2.9 92/02/19 16:07:19 elf
79: * Reenable thread_depress_abort.
80: * [92/01/20 rwd]
81: *
82: * Revision 2.8 92/01/03 20:21:13 dbg
83: * Add 'CountInOut' tag to routines returning variable-length
84: * inline arrays. Remove 'IsLong' tag from routines passing or
85: * returning variable-length arrays. Old routines left under
86: * 'xxx_' names. REMOVE THESE SOON!
87: * [91/11/26 dbg]
88: *
89: * Revision 2.7 91/07/31 17:53:39 dbg
90: * Add vm_wire and thread_wire.
91: * [91/07/30 17:10:17 dbg]
92: *
93: * Revision 2.6 91/05/14 16:54:32 mrt
94: * Correcting copyright
95: *
96: * Revision 2.5 91/02/05 17:33:20 mrt
97: * Changed to new Mach copyright
98: * [91/02/01 17:17:52 mrt]
99: *
100: * Revision 2.4 90/09/09 14:33:08 rpd
101: * Restored processor_set_create's out arguments.
102: * [90/08/30 rpd]
103: *
104: * Revision 2.3 90/08/07 18:00:21 rpd
105: * Removed thread_depress_abort. Changed host_processor_sets
106: * to use unprivileged ports.
107: * [90/08/06 rpd]
108: *
109: * Revision 2.2 90/06/02 14:58:17 rpd
110: * Created for new host/processor technology.
111: * [90/03/26 23:51:11 rpd]
112: *
113: * Remove KERNEL_SERVER define. Cleanup.
114: * [89/08/02 dlb]
115: * Add IsLong specifiers to variable length arguments to info calls.
116: * [89/08/02 dlb]
117: * Add thread_depress_abort.
118: * [89/06/20 dlb]
119: *
120: * Add processor_set_{tasks,threads}, host_processor_sets,
121: * host_processor_set_priv.
122: * [89/06/08 dlb]
123: *
124: * Add priority and policy calls.
125: * [89/05/12 dlb]
126: *
127: * Move type definitions to mach_types.defs, delete kernel keyword.
128: * [89/01/25 dlb]
129: *
130: * Moved to mach/ from kern/
131: * [89/01/25 dlb]
132: *
133: * Split processor_set_default. Add task_assign_default and
134: * thread_assign_default.
135: * [88/12/21 dlb]
136: *
137: * Minor cleanups, add host_kernel_version.
138: * [88/12/02 dlb]
139: *
140: * Revision 2.4 89/12/22 15:54:26 rpd
141: * Under KERNEL_SERVER, pass the out arguments of
142: * processor_set_create as port_t's. They really are
143: * the appropriate processor set types, but processor_set_create
144: * does the type conversions internally. This isn't pretty.
145: * [89/12/15 dlb]
146: *
147: * Revision 2.3 89/10/15 02:05:40 rpd
148: * Minor cleanups.
149: *
150: * Revision 2.2 89/10/11 14:38:34 dlb
151: * Add IsLong specifiers to variable length arguments to info calls.
152: * Add thread_depress_abort.
153: * Add processor_set_{tasks,threads}, host_processor_sets,
154: * host_processor_set_priv.
155: * Add priority and policy calls.
156: * Split processor_set_default. Add task_assign_default and
157: * thread_assign_default.
158: * Add host_kernel_version.
159: *
160: * Revision 2.1 89/01/30 16:17:06 dlb
161: * Created.
162: *
163: */
164:
165: /*
166: * File: mach/mach_host.defs
167: *
168: * Abstract:
169: * Mach host operations support. Includes processor allocation and
170: * control.
171: */
172:
173: subsystem
174: #if KERNEL_SERVER && defined(MACH_IPC_FLAVOR)
175: KernelServer
176: #endif KERNEL_SERVER
177: mach_host 2600;
178:
179: /*
180: * Basic types
181: */
182:
183: #include <mach/std_types.defs>
184: #include <mach/mach_types.defs>
185:
186: /*
187: * Get list of processors on this host.
188: */
189:
190: routine host_processors(
191: host_priv : host_priv_t;
192: out processor_list : processor_array_t);
193:
194: /*
195: * Return information about this host.
196: */
197:
198: routine host_info(
199: host : host_t;
200: flavor : int;
201: out host_info_out : host_info_t, IsLong);
202:
203:
204: /*
205: * Return information about this processor.
206: */
207: routine processor_info(
208: processor : processor_t;
209: flavor : int;
210: out host : host_t;
211: out processor_info_out: processor_info_t, IsLong);
212:
213: /*
214: * Start processor.
215: */
216:
217: routine processor_start(
218: processor : processor_t);
219:
220: /*
221: * Exit processor -- may not be restartable.
222: */
223:
224: routine processor_exit(
225: processor : processor_t);
226:
227: /*
228: * Do something machine-dependent to processor.
229: */
230: routine processor_control(
231: processor : processor_t;
232: processor_cmd : processor_info_t, IsLong);
233:
234: /*
235: * Get default processor set for host.
236: */
237: routine processor_set_default(
238: host : host_t;
239: out default_set : processor_set_name_t);
240:
241: /*
242: * Create new processor set. Returns real port for manipulations,
243: * and name port for obtaining information.
244: */
245: routine processor_set_create(
246: host : host_t;
247: out new_set : processor_set_t;
248: out new_name : processor_set_name_t);
249:
250: /*
251: * Destroy processor set.
252: */
253: routine processor_set_destroy(
254: set : processor_set_t);
255:
256: /*
257: * Get information about processor set.
258: */
259: routine processor_set_info(
260: set_name : processor_set_name_t;
261: flavor : int;
262: out host : host_t;
263: out info_out : processor_set_info_t, IsLong);
264:
265: /*
266: * Assign processor to processor set.
267: */
268: routine processor_assign(
269: processor : processor_t;
270: new_set : processor_set_t;
271: wait : boolean_t);
272:
273: /*
274: * Get current assignment for processor.
275: */
276:
277: routine processor_get_assignment(
278: processor : processor_t;
279: out assigned_set : processor_set_name_t);
280:
281: /*
282: * Assign thread to processor set.
283: */
284: routine thread_assign(
285: thread : thread_t;
286: new_set : processor_set_t);
287:
288: /*
289: * Assign thread to default set.
290: */
291: routine thread_assign_default(
292: thread : thread_t);
293:
294: /*
295: * Get current assignment for thread.
296: */
297: routine thread_get_assignment(
298: thread : thread_t;
299: out assigned_set : processor_set_name_t);
300:
301: /*
302: * Assign task to processor set.
303: */
304: routine task_assign(
305: task : task_t;
306: new_set : processor_set_t;
307: assign_threads : boolean_t);
308: /*
309: * Assign task to default set.
310: */
311: routine task_assign_default(
312: task : task_t;
313: assign_threads : boolean_t);
314:
315: /*
316: * Get current assignment for task.
317: */
318: routine task_get_assignment(
319: task : task_t;
320: out assigned_set : processor_set_name_t);
321:
322: /*
323: * Get string describing current kernel version.
324: */
325: routine host_kernel_version(
326: host : host_t;
327: out kernel_version : kernel_version_t);
328:
329: /*
330: * Set priority for thread.
331: */
332: routine thread_priority(
333: thread : thread_t;
334: priority : int;
335: set_max : boolean_t);
336:
337: /*
338: * Set max priority for thread.
339: */
340: routine thread_max_priority(
341: thread : thread_t;
342: processor_set : processor_set_t;
343: max_priority : int);
344:
345: /*
346: * Set task priority.
347: */
348: routine task_priority(
349: task : task_t;
350: priority : int;
351: change_threads : boolean_t);
352:
353: /*
354: * Set max priority for processor_set.
355: */
356: routine processor_set_max_priority(
357: processor_set : processor_set_t;
358: max_priority : int;
359: change_threads : boolean_t);
360:
361: /*
362: * Set policy for thread
363: */
364: routine thread_policy(
365: thread : thread_t;
366: policy : int;
367: data : int);
368:
369: /*
370: * Enable policy for processor set
371: */
372: routine processor_set_policy_enable(
373: processor_set : processor_set_t;
374: policy : int);
375:
376: /*
377: * Disable policy for processor set
378: */
379: routine processor_set_policy_disable(
380: processor_set : processor_set_t;
381: policy : int;
382: change_threads : boolean_t);
383: /*
384: * List all tasks in processor set.
385: */
386: routine processor_set_tasks(
387: processor_set : processor_set_t;
388: out task_list : task_array_t);
389:
390: /*
391: * List all threads in processor set.
392: */
393: routine processor_set_threads(
394: processor_set : processor_set_t;
395: out thread_list : thread_array_t);
396:
397: /*
398: * List all processor sets on host.
399: */
400: routine host_processor_sets(
401: host : host_t;
402: out processor_sets : processor_set_name_array_t);
403:
404: /*
405: * Get control port for a processor set.
406: */
407: routine host_processor_set_priv(
408: host_priv : host_priv_t;
409: set_name : processor_set_name_t;
410: out set : processor_set_t);
411:
412: routine thread_depress_abort(
413: thread : thread_t);
414:
415: skip; /* host_set_time */
416: skip; /* host_adjust_time */
417: skip; /* host_get_time */
418: skip; /* host_reboot */
419:
420: /*
421: ** Specify that the range of the virtual address space
422: ** of the target task must not cause page faults for
423: ** the indicated accesses.
424: **
425: ** [ To unwire the pages, specify VM_PROT_NONE. ]
426: */
427: routine vm_wire(
428: host_priv : host_priv_t;
429: task : vm_task_t;
430: address : vm_address_t;
431: size : vm_size_t;
432: acccess : vm_prot_t);
433:
434: skip; /* thread_wire */
435: skip; /* host_info: MACH 3.0 */
436: skip; /* processor_info: MACH 3.0 */
437: skip; /* processor_set_info: MACH 3.0 */
438: skip; /* processor_control: MACH 3.0 */
439: skip; /* host_get_boot_info: MACH 3.0 */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.