|
|
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: * Mach Operating System
27: * Copyright (c) 1991,1990,1989,1988 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: */
52:
53: /*
54: * Matchmaker definitions file for Mach kernel interface.
55: */
56: subsystem
57: #if KERNEL_USER
58: KernelUser
59: #endif /* KERNEL_USER */
60: #if KERNEL_SERVER
61: KernelServer
62: #endif /* KERNEL_SERVER */
63: host_priv 400;
64:
65: #ifdef KERNEL_USER
66: userprefix r_;
67: #endif /* KERNEL_USER */
68:
69: #include <mach/std_types.defs>
70: #include <mach/mach_types.defs>
71: #include <mach/clock_types.defs>
72: #include <mach_debug/mach_debug_types.defs>
73:
74: /*
75: * Get boot configuration information from kernel.
76: */
77: routine host_get_boot_info(
78: host_priv : host_priv_t;
79: out boot_info : kernel_boot_info_t);
80:
81: /*
82: * Reboot this host.
83: * Only available to privileged users.
84: */
85: routine host_reboot(
86: host_priv : host_priv_t;
87: options : int);
88:
89:
90: /*
91: * Return statistics from this host.
92: */
93: routine host_statistics(
94: host_priv : host_priv_t;
95: flavor : host_flavor_t;
96: out host_info_out : host_info_t, CountInOut);
97:
98: /*
99: * Sets the default memory manager, the port to which
100: * newly-created temporary memory objects are delivered.
101: * [See (memory_object_default)memory_object_create.]
102: * Also sets the default cluster size used for pagein/pageout
103: * to this port.
104: * The old memory manager port is returned.
105: */
106: routine host_default_memory_manager(
107: host_priv : host_priv_t;
108: inout default_manager : memory_object_default_t =
109: MACH_MSG_TYPE_MAKE_SEND;
110: cluster_size : vm_size_t);
111:
112:
113: /*
114: * Specify that the range of the virtual address space
115: * of the target task must not cause page faults for
116: * the indicated accesses.
117: *
118: * [ To unwire the pages, specify VM_PROT_NONE. ]
119: */
120: routine vm_wire(
121: host_priv : host_priv_t;
122: task : vm_map_t;
123: address : vm_address_t;
124: size : vm_size_t;
125: access : vm_prot_t);
126:
127: /*
128: * Specify that the target thread must always be able
129: * to run and to allocate memory.
130: */
131: routine thread_wire(
132: host_priv : host_priv_t;
133: thread : thread_act_t;
134: wired : boolean_t);
135:
136: /*
137: * Allocate zero-filled, wired, contiguous physical memory
138: * in the address space of the target task, either at the
139: * specified address, or wherever space can be found (if
140: * anywhere is TRUE), of the specified size. The address
141: * at which the allocation actually took place is returned.
142: * All pages will be entered into the task's pmap immediately,
143: * with VM_PROT_ALL.
144: *
145: * In addition to all the failure modes of its cousin,
146: * vm_allocate, this call may also fail if insufficient
147: * contiguous memory exists to satisfy the request.
148: *
149: * Memory obtained from this call should be freed the
150: * normal way, via vm_deallocate.
151: *
152: * N.B. This is an EXPERIMENTAL interface!
153: */
154: routine vm_allocate_cpm(
155: host_priv : host_priv_t;
156: task : vm_map_t;
157: inout address : vm_address_t;
158: size : vm_size_t;
159: anywhere : boolean_t);
160:
161: /*
162: * Get list of processors on this host.
163: */
164: routine host_processors(
165: host_priv : host_priv_t;
166: out processor_list : processor_array_t);
167:
168:
169: /*
170: * Get control port for a processor set.
171: * Privileged.
172: */
173: routine host_get_clock_control(
174: host_priv : host_priv_t;
175: clock_id : clock_id_t;
176: out clock_ctrl : clock_ctrl_t);
177:
178:
179: /*
180: * kernel module interface
181: *
182: * see mach/kmod.h:
183: */
184: routine kmod_create(
185: host_priv : host_priv_t;
186: info : vm_address_t;
187: out module : kmod_t);
188:
189: routine kmod_destroy(
190: host_priv : host_priv_t;
191: module : kmod_t);
192:
193: routine kmod_control(
194: host_priv : host_priv_t;
195: module : kmod_t;
196: flavor : kmod_control_flavor_t;
197: inout data : kmod_args_t);
198:
199: /*
200: * Get a given special port for a given node.
201: * Norma special ports are defined in norma_special_ports.h;
202: * examples include the master device port.
203: * There are a limited number of slots available for system servers.
204: */
205: routine host_get_special_port(
206: host_priv : host_priv_t;
207: node : int;
208: which : int;
209: out port : mach_port_t);
210:
211: /*
212: * Set a given special port for a given node.
213: * See norma_get_special_port.
214: */
215: routine host_set_special_port(
216: host_priv : host_priv_t;
217: which : int;
218: port : mach_port_t);
219:
220: /*
221: * ETAP: etap_mon_reconfig
222: *
223: * The etap_mon_reconfig message allows the single server to change the
224: * size of the ETAP monitoring buffer.
225: *
226: * o New number of monitor buffer entries
227: */
228: routine etap_mon_reconfig(
229: host_priv : host_priv_t;
230: nentries : int);
231:
232: routine etap_new_probe(
233: host_priv : host_priv_t;
234: name : vm_address_t;
235: namlen : vm_size_t;
236: trace_on : boolean_t;
237: id : vm_address_t);
238:
239: /*
240: * ETAP: etap_get_info
241: *
242: * The etap_get_info message provides the single server with
243: * event trace analysis package configuration information.
244: *
245: * o Number of event table entries
246: * o Number of subsystem table entries
247: * o Offset into page containing event table
248: * o Offset into page containing subsystem table
249: * o Cumulative buffer interval width
250: * o Monitor buffer size
251: * o Number of monitor buffer entries
252: * o Number of monitor buffers (one per cpu)
253: */
254: routine etap_get_info(
255: host_priv : host_priv_t;
256: out et_entries : int;
257: out st_entries : int;
258: out et_offset : vm_offset_t;
259: out st_offset : vm_offset_t;
260: out cb_width : int;
261: out mb_size : int;
262: out mb_entries : int;
263: out mb_cpus : int);
264:
265: /*
266: * Loads a symbol table for an external file into the kernel debugger.
267: * The symbol table data is an array of characters. It is assumed that
268: * the caller and the kernel debugger agree on its format.
269: * This call is only supported in MACH_DEBUG and MACH_KDB kernels,
270: * otherwise KERN_FAILURE is returned.
271: */
272: routine host_load_symbol_table(
273: host : host_priv_t;
274: task : task_t;
275: name : symtab_name_t;
276: symtab : pointer_t);
277:
278: /*
279: * Make the target task swappable or unswappable.
280: */
281: routine task_swappable(
282: host_priv : host_priv_t;
283: target_task : task_t;
284: make_swappable : boolean_t);
285:
286: /*
287: * JMM - Keep all processor_set related items at the end for easy
288: * removal.
289: */
290: /*
291: * List all processor sets on host.
292: */
293: routine host_processor_sets(
294: host_priv : host_priv_t;
295: out processor_sets : processor_set_name_array_t);
296:
297: /*
298: * Get control port for a processor set.
299: */
300: routine host_processor_set_priv(
301: host_priv : host_priv_t;
302: set_name : processor_set_name_t;
303: out set : processor_set_t);
304: /*
305: * Set the dynamic_pager control port. Other entities
306: * can request a send right to this port to talk with
307: * the dynamic_pager utility, setting behavioral parameters
308: * within the dynamic pager and getting low/high backing store
309: * resource notifications.
310: */
311: routine set_dp_control_port(
312: host : host_priv_t;
313: in control_port : mach_port_t);
314:
315: /*
316: * Get the dynamic_pager control port. This port
317: * allows the holder to talk directly with the dynamic
318: * pager utility.
319: */
320: routine get_dp_control_port(
321: host : host_priv_t;
322: out contorl_port :mach_port_t);
323:
324:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.