|
|
1.1 root 1: /*
2: * Mach Operating System
3: * Copyright (c) 1991,1990,1989 Carnegie Mellon University.
4: * Copyright (c) 1993,1994 The University of Utah and
5: * the Computer Systems Laboratory (CSL).
6: * All rights reserved.
7: *
8: * Permission to use, copy, modify and distribute this software and its
9: * documentation is hereby granted, provided that both the copyright
10: * notice and this permission notice appear in all copies of the
11: * software, derivative works or modified versions, and any portions
12: * thereof, and that both notices appear in supporting documentation.
13: *
14: * CARNEGIE MELLON, THE UNIVERSITY OF UTAH AND CSL ALLOW FREE USE OF
15: * THIS SOFTWARE IN ITS "AS IS" CONDITION, AND DISCLAIM ANY LIABILITY
16: * OF ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF
17: * THIS SOFTWARE.
18: *
19: * Carnegie Mellon requests users of this software to return to
20: *
21: * Software Distribution Coordinator or [email protected]
22: * School of Computer Science
23: * Carnegie Mellon University
24: * Pittsburgh PA 15213-3890
25: *
26: * any improvements or extensions that they make and grant Carnegie Mellon
27: * the rights to redistribute these changes.
28: */
29: /*
30: * File: mach/mach_host.defs
31: *
32: * Abstract:
33: * Mach host operations support. Includes processor allocation and
34: * control.
35: */
36:
37: #ifdef MACH_KERNEL
38: simport <kern/compat_xxx_defs.h>; /* for obsolete routines */
39: #endif
40:
41: subsystem
42: #if KERNEL_SERVER
43: KernelServer
44: #endif
45: mach_host 2600;
46:
47: /*
48: * Basic types
49: */
50:
51: #include <mach/std_types.defs>
52: #include <mach/mach_types.defs>
53:
54: /*
55: * Get list of processors on this host.
56: */
57:
58: routine host_processors(
59: host_priv : host_priv_t;
60: out processor_list : processor_array_t);
61:
62: /* obsolete */
63: routine yyy_host_info(
64: host : host_t;
65: flavor : int;
66: out host_info_out : host_info_t, IsLong);
67:
68:
69: /* obsolete */
70: routine yyy_processor_info(
71: processor : processor_t;
72: flavor : int;
73: out host : host_t;
74: out processor_info_out: processor_info_t, IsLong);
75:
76: /*
77: * Start processor.
78: */
79:
80: routine processor_start(
81: processor : processor_t);
82:
83: /*
84: * Exit processor -- may not be restartable.
85: */
86:
87: routine processor_exit(
88: processor : processor_t);
89:
90: /* obsolete */
91: routine yyy_processor_control(
92: processor : processor_t;
93: processor_cmd : processor_info_t, IsLong);
94:
95: /*
96: * Get default processor set for host.
97: */
98: routine processor_set_default(
99: host : host_t;
100: out default_set : processor_set_name_t);
101:
102: /*
103: * Get rights to default processor set for host.
104: * Replaced by host_processor_set_priv.
105: */
106: routine xxx_processor_set_default_priv(
107: host : host_priv_t;
108: out default_set : processor_set_t);
109:
110: /*
111: * Create new processor set. Returns real port for manipulations,
112: * and name port for obtaining information.
113: */
114: routine processor_set_create(
115: host : host_t;
116: out new_set : processor_set_t;
117: out new_name : processor_set_name_t);
118:
119: /*
120: * Destroy processor set.
121: */
122: routine processor_set_destroy(
123: set : processor_set_t);
124:
125: /* obsolete */
126: routine yyy_processor_set_info(
127: set_name : processor_set_name_t;
128: flavor : int;
129: out host : host_t;
130: out info_out : processor_set_info_t, IsLong);
131:
132: /*
133: * Assign processor to processor set.
134: */
135: routine processor_assign(
136: processor : processor_t;
137: new_set : processor_set_t;
138: wait : boolean_t);
139:
140: /*
141: * Get current assignment for processor.
142: */
143:
144: routine processor_get_assignment(
145: processor : processor_t;
146: out assigned_set : processor_set_name_t);
147:
148: /*
149: * Assign thread to processor set.
150: */
151: routine thread_assign(
152: thread : thread_t;
153: new_set : processor_set_t);
154:
155: /*
156: * Assign thread to default set.
157: */
158: routine thread_assign_default(
159: thread : thread_t);
160:
161: /*
162: * Get current assignment for thread.
163: */
164: routine thread_get_assignment(
165: thread : thread_t;
166: out assigned_set : processor_set_name_t);
167:
168: /*
169: * Assign task to processor set.
170: */
171: routine task_assign(
172: task : task_t;
173: new_set : processor_set_t;
174: assign_threads : boolean_t);
175: /*
176: * Assign task to default set.
177: */
178: routine task_assign_default(
179: task : task_t;
180: assign_threads : boolean_t);
181:
182: /*
183: * Get current assignment for task.
184: */
185: routine task_get_assignment(
186: task : task_t;
187: out assigned_set : processor_set_name_t);
188:
189: /*
190: * Get string describing current kernel version.
191: */
192: routine host_kernel_version(
193: host : host_t;
194: out kernel_version : kernel_version_t);
195:
196: /*
197: * Set priority for thread.
198: */
199: routine thread_priority(
200: thread : thread_t;
201: priority : int;
202: set_max : boolean_t);
203:
204: /*
205: * Set max priority for thread.
206: */
207: routine thread_max_priority(
208: thread : thread_t;
209: processor_set : processor_set_t;
210: max_priority : int);
211:
212: /*
213: * Set task priority.
214: */
215: routine task_priority(
216: task : task_t;
217: priority : int;
218: change_threads : boolean_t);
219:
220: /*
221: * Set max priority for processor_set.
222: */
223: routine processor_set_max_priority(
224: processor_set : processor_set_t;
225: max_priority : int;
226: change_threads : boolean_t);
227:
228: /*
229: * Set policy for thread
230: */
231: routine thread_policy(
232: thread : thread_t;
233: policy : int;
234: data : int);
235:
236: /*
237: * Enable policy for processor set
238: */
239: routine processor_set_policy_enable(
240: processor_set : processor_set_t;
241: policy : int);
242:
243: /*
244: * Disable policy for processor set
245: */
246: routine processor_set_policy_disable(
247: processor_set : processor_set_t;
248: policy : int;
249: change_threads : boolean_t);
250: /*
251: * List all tasks in processor set.
252: */
253: routine processor_set_tasks(
254: processor_set : processor_set_t;
255: out task_list : task_array_t);
256:
257: /*
258: * List all threads in processor set.
259: */
260: routine processor_set_threads(
261: processor_set : processor_set_t;
262: out thread_list : thread_array_t);
263:
264: /*
265: * List all processor sets on host.
266: */
267: routine host_processor_sets(
268: host : host_t;
269: out processor_sets : processor_set_name_array_t);
270:
271: /*
272: * Get control port for a processor set.
273: */
274: routine host_processor_set_priv(
275: host_priv : host_priv_t;
276: set_name : processor_set_name_t;
277: out set : processor_set_t);
278:
279: routine thread_depress_abort(
280: thread : thread_t);
281:
282: /*
283: * Set the time on this host.
284: * Only available to privileged users.
285: */
286: routine host_set_time(
287: host_priv : host_priv_t;
288: new_time : time_value_t);
289:
290: /*
291: * Arrange for the time on this host to be gradually changed
292: * by an adjustment value, and return the old value.
293: * Only available to privileged users.
294: */
295: routine host_adjust_time(
296: host_priv : host_priv_t;
297: in new_adjustment : time_value_t;
298: out old_adjustment : time_value_t);
299:
300: /*
301: * Get the time on this host.
302: * Available to all.
303: */
304: routine host_get_time(
305: host : host_t;
306: out current_time : time_value_t);
307:
308: /*
309: * Reboot this host.
310: * Only available to privileged users.
311: */
312: routine host_reboot(
313: host_priv : host_priv_t;
314: options : int);
315:
316: /*
317: * Specify that the range of the virtual address space
318: * of the target task must not cause page faults for
319: * the indicated accesses.
320: *
321: * [ To unwire the pages, specify VM_PROT_NONE. ]
322: */
323: routine vm_wire(
324: host_priv : host_priv_t;
325: task : vm_task_t;
326: address : vm_address_t;
327: size : vm_size_t;
328: access : vm_prot_t);
329:
330: /*
331: * Specify that the target thread must always be able
332: * to run and to allocate memory.
333: */
334: routine thread_wire(
335: host_priv : host_priv_t;
336: thread : thread_t;
337: wired : boolean_t);
338:
339: /*
340: * Return information about this host.
341: */
342:
343: routine host_info(
344: host : host_t;
345: flavor : int;
346: out host_info_out : host_info_t, CountInOut);
347:
348:
349: /*
350: * Return information about this processor.
351: */
352: routine processor_info(
353: processor : processor_t;
354: flavor : int;
355: out host : host_t;
356: out processor_info_out: processor_info_t, CountInOut);
357:
358: /*
359: * Get information about processor set.
360: */
361: routine processor_set_info(
362: set_name : processor_set_name_t;
363: flavor : int;
364: out host : host_t;
365: out info_out : processor_set_info_t, CountInOut);
366:
367: /*
368: * Do something machine-dependent to processor.
369: */
370: routine processor_control(
371: processor : processor_t;
372: processor_cmd : processor_info_t);
373:
374: /*
375: * Get boot configuration information from kernel.
376: */
377: routine host_get_boot_info(
378: host_priv : host_priv_t;
379: out boot_info : kernel_boot_info_t);
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.