1 /*
2 * Mach Operating System
3 * Copyright (c) 1993-1988 Carnegie Mellon University
4 * All Rights Reserved.
5 *
6 * Permission to use, copy, modify and distribute this software and its
7 * documentation is hereby granted, provided that both the copyright
8 * notice and this permission notice appear in all copies of the
9 * software, derivative works or modified versions, and any portions
10 * thereof, and that both notices appear in supporting documentation.
11 *
12 * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
13 * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
14 * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
15 *
16 * Carnegie Mellon requests users of this software to return to
17 *
18 * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
19 * School of Computer Science
20 * Carnegie Mellon University
21 * Pittsburgh PA 15213-3890
22 *
23 * any improvements or extensions that they make and grant Carnegie Mellon
24 * the rights to redistribute these changes.
25 */
26 /*
27 * HISTORY
28 * $Log: mach_types.defs,v $
29 * Revision 2.14 93/11/17 17:40:51 dbg
30 * Finished the 64-bit cleanup: made host_sched_info_data_t,
31 * processor_set_basic_info_data_t, processor_set_sched_info_data_t
32 * be structs of integer_t, since they are passed as
33 * variable-length arrays of integer_t.
34 * [93/11/09 dbg]
35 *
36 * Added policy_param_t.
37 * [93/05/11 dbg]
38 *
39 * Added types for new clocks and timers.
40 * [93/03/24 dbg]
41 *
42 * Revision 2.13 93/01/14 17:44:32 danner
43 * 64bit cleanup. All types now based on integer_t/natural_t.
44 * [92/12/01 af]
45 *
46 * Revision 2.12 92/03/10 16:26:58 jsb
47 * NORMA_VM: use xmm_kobj_lookup to convert memory_object_control ports.
48 * From durriya@ri.osf.org: defined kernel_boot_info_t.
49 * [92/03/07 08:30:08 jsb]
50 *
51 * Revision 2.11 92/01/14 16:45:29 rpd
52 * Added translations for memory_object_name_t.
53 * [92/01/06 21:49:29 rpd]
54 *
55 * Revision 2.10 92/01/03 20:46:29 dbg
56 * Changed emulation_vector_t to pass data out-of-line. Renamed
57 * old type to xxx_emulation_vector_t for compatibility.
58 * Removed vm_page_data_t.
59 * [92/01/03 dbg]
60 *
61 * Revision 2.9 91/08/28 11:15:16 jsb
62 * Increased the size of mach_port_status_t, for mps_seqno.
63 * Added old_mach_port_status_t, for compatibility purposes.
64 * [91/08/09 rpd]
65 * Add memory_object_return_t for precious page support.
66 * [91/07/03 14:04:25 dlb]
67 *
68 * Revision 2.8 91/06/25 10:30:10 rpd
69 * Changed the port-based type declarations
70 * to use mach_port_t as the C type name.
71 * [91/05/23 rpd]
72 *
73 * Revision 2.7 91/06/06 17:08:02 jsb
74 * Added emulation_vector_t for new get/set emulation vector calls.
75 * [91/05/24 17:45:33 jsb]
76 *
77 * Revision 2.6 91/05/14 16:55:06 mrt
78 * Correcting copyright
79 *
80 * Revision 2.5 91/02/05 17:33:39 mrt
81 * Changed to new Mach copyright
82 * [91/02/01 17:18:30 mrt]
83 *
84 * Revision 2.4 90/08/07 18:00:26 rpd
85 * Added processor_set_name_array_t.
86 * [90/08/06 rpd]
87 *
88 * Revision 2.3 90/06/02 14:58:35 rpd
89 * Added mach_port_status_t.
90 * [90/05/13 rpd]
91 * Converted to new IPC.
92 * [90/03/26 22:33:34 rpd]
93 *
94 * Revision 2.2 90/01/22 23:05:44 af
95 * Added vm_attribute()'s types.
96 * [89/12/09 10:45:16 af]
97 *
98 * Revision 2.1 89/08/03 17:17:40 rwd
99 * Created.
100 *
101 * Revision 2.3 89/02/25 18:37:59 gm0w
102 * Changes for cleanup.
103 *
104 * Revision 2.2 89/01/15 16:30:33 rpd
105 * Moved from kern/ to mach/.
106 * [89/01/15 14:36:47 rpd]
107 *
108 * Revision 2.6 89/01/12 07:57:37 rpd
109 * Moved standard stuff to std_types.defs. Moved debugging definitions
110 * like ipc_statistics_t out to other files.
111 * [89/01/12 04:50:24 rpd]
112 *
113 * Revision 2.5 89/01/04 13:37:11 rpd
114 * Increased size of fpa_counters_t.
115 * [89/01/03 16:46:38 rpd]
116 *
117 * Added fpa_counters_t type.
118 * [89/01/01 15:03:09 rpd]
119 *
120 * Revision 2.4 88/09/25 22:15:16 rpd
121 * Bumped size of callout_statistics_t to account for the
122 * new field, cos_num_untimeout_hit.
123 * [88/09/09 23:14:38 rpd]
124 *
125 * Fixed log. Changed includes to the new style.
126 * Added definitions of callout_info_t,
127 * callout_info_array_t, callout_statistics_t.
128 * [88/09/09 04:46:31 rpd]
129 *
130 */
131 /*
132 * Mach kernel interface type declarations
133 */
134
135 #ifndef _MACH_MACH_TYPES_DEFS_
136 #define _MACH_MACH_TYPES_DEFS_
137
138 /*
139 * For KernelServer and KernelUser interfaces, Mig will
140 * automagically use ipc_port_t instead of mach_port_t
141 * on the kernel side of the interface. For example,
142 * convert_task_to_port really returns ipc_port_t.
143 * Doing this in Mig saves many explicit conditional
144 * cusertype/cservertype declarations.
145 *
146 * Mig doesn't translate the components of an array.
147 * For example, Mig won't use the thread_t translations
148 * to translate a thread_array_t argument.
149 */
150
151 #include <mach/std_types.defs>
152 #if KERNEL_SERVER
153 #include <norma_vm.h>
154 #endif /* KERNEL_SERVER */
155
156 type mach_port_status_t = struct[9] of integer_t;
157
158 type old_mach_port_status_t = struct[8] of integer_t; /* compatibility */
159
160 type task_t = mach_port_t
161 ctype: mach_port_t
162 #if KERNEL_SERVER
163 intran: task_t convert_port_to_task(mach_port_t)
164 outtran: mach_port_t convert_task_to_port(task_t)
165 destructor: task_deallocate(task_t)
166 #endif /* KERNEL_SERVER */
167 ;
168
169 type thread_t = mach_port_t
170 ctype: mach_port_t
171 #if KERNEL_SERVER
172 intran: thread_t convert_port_to_thread(mach_port_t)
173 outtran: mach_port_t convert_thread_to_port(thread_t)
174 destructor: thread_deallocate(thread_t)
175 #endif /* KERNEL_SERVER */
176 ;
177
178 type thread_state_t = array[*:1024] of natural_t;
179
180 type task_array_t = ^array[] of task_t;
181 type thread_array_t = ^array[] of thread_t;
182
183 type vm_task_t = mach_port_t
184 ctype: mach_port_t
185 #if KERNEL_SERVER
186 intran: vm_map_t convert_port_to_map(mach_port_t)
187 destructor: vm_map_deallocate(vm_map_t)
188 #endif /* KERNEL_SERVER */
189 ;
190
191 type ipc_space_t = mach_port_t
192 ctype: mach_port_t
193 #if KERNEL_SERVER
194 intran: ipc_space_t convert_port_to_space(mach_port_t)
195 destructor: space_deallocate(ipc_space_t)
196 #endif /* KERNEL_SERVER */
197 ;
198
199 type vm_address_t = natural_t;
200 type vm_offset_t = natural_t;
201 type vm_size_t = natural_t;
202 type vm_prot_t = int;
203 type vm_inherit_t = int;
204 type vm_statistics_data_t = struct[13] of integer_t;
205 type vm_machine_attribute_t = int;
206 type vm_machine_attribute_val_t = int;
207
208 type thread_info_t = array[*:1024] of natural_t;
209 type thread_basic_info_data_t = struct[11] of integer_t;
210 type thread_sched_info_data_t = struct[7] of integer_t;
211
212 type task_info_t = array[*:1024] of natural_t;
213 type task_basic_info_data_t = struct[8] of integer_t;
214 type task_events_info = struct[7] of natural_t;
215 type task_thread_times_info_data_t = struct[4] of integer_t;
216
217
218 type memory_object_t = mach_port_t
219 ctype: mach_port_t
220 #if KERNEL_SERVER
221 intran: ipc_port_t null_conversion(mach_port_t)
222 #endif /* KERNEL_SERVER */
223 ;
224
225 type memory_object_control_t = mach_port_t
226 ctype: mach_port_t
227 #if KERNEL_SERVER
228 #if NORMA_VM
229 intran: mach_xmm_obj_t xmm_kobj_lookup(mach_port_t)
230 #else /* NORMA_VM */
231 intran: vm_object_t vm_object_lookup(mach_port_t)
232 #endif /* NORMA_VM */
233 #endif /* KERNEL_SERVER */
234 ;
235
236 type memory_object_name_t = mach_port_t
237 ctype: mach_port_t
238 #if KERNEL_SERVER
239 intran: vm_object_t vm_object_lookup_name(mach_port_t)
240 destructor: vm_object_deallocate(vm_object_t)
241 #endif /* KERNEL_SERVER */
242 ;
243
244 type memory_object_copy_strategy_t = int;
245 type memory_object_return_t = int;
246
247 type machine_info_data_t = struct[5] of integer_t;
248 type machine_slot_data_t = struct[8] of integer_t;
249
250 type host_t = mach_port_t
251 ctype: mach_port_t
252 #if KERNEL_SERVER
253 intran: host_t convert_port_to_host(mach_port_t)
254 outtran: mach_port_t convert_host_to_port(host_t)
255 #endif /* KERNEL_SERVER */
256 ;
257
258 type host_priv_t = mach_port_t
259 ctype: mach_port_t
260 #if KERNEL_SERVER
261 intran: host_t convert_port_to_host_priv(mach_port_t)
262 #endif /* KERNEL_SERVER */
263 ;
264
265 type host_info_t = array[*:1024] of natural_t;
266 type host_basic_info_data_t = struct[5] of integer_t;
267 type host_sched_info_data_t = struct[2] of integer_t;
268 type host_load_info_data_t = struct[6] of integer_t;
269
270
271 type processor_t = mach_port_t
272 ctype: mach_port_t
273 #if KERNEL_SERVER
274 intran: processor_t convert_port_to_processor(mach_port_t)
275 outtran: mach_port_t convert_processor_to_port(processor_t)
276 #endif /* KERNEL_SERVER */
277 ;
278
279 type processor_array_t = ^array[] of processor_t;
280 type processor_info_t = array[*:1024] of natural_t;
281 type processor_basic_info_data_t = struct[5] of integer_t;
282
283
284 type processor_set_t = mach_port_t
285 ctype: mach_port_t
286 #if KERNEL_SERVER
287 intran: processor_set_t convert_port_to_pset(mach_port_t)
288 outtran: mach_port_t convert_pset_to_port(processor_set_t)
289 destructor: pset_deallocate(processor_set_t)
290 #endif /* KERNEL_SERVER */
291 ;
292
293 type processor_set_array_t = ^array[] of processor_set_t;
294
295 type processor_set_name_t = mach_port_t
296 ctype: mach_port_t
297 #if KERNEL_SERVER
298 intran: processor_set_t convert_port_to_pset_name(mach_port_t)
299 outtran: mach_port_t convert_pset_name_to_port(processor_set_t)
300 destructor: pset_deallocate(processor_set_t)
301 #endif /* KERNEL_SERVER */
302 ;
303
304 type processor_set_name_array_t = ^array[] of processor_set_name_t;
305
306 type processor_set_info_t = array[*:1024] of natural_t;
307 type processor_set_basic_info_data_t = struct[5] of integer_t;
308 type processor_set_sched_info_data_t = struct[2] of integer_t;
309
310
311 type kernel_version_t = (MACH_MSG_TYPE_STRING, 512*8);
312
313 type kernel_boot_info_t = (MACH_MSG_TYPE_STRING, 4096*8);
314
315 type time_value_t = struct[2] of integer_t;
316
317 type emulation_vector_t = ^array[] of vm_offset_t;
318
319 type xxx_emulation_vector_t = array[*:1024] of vm_offset_t
320 ctype: emulation_vector_t;
321 /* XXX compatibility */
322
323 type mach_timer_t = mach_port_t
324 ctype: mach_port_t
325 #if KERNEL_SERVER
326 intran: mach_timer_t convert_port_to_timer(mach_port_t)
327 outtran: mach_port_t convert_timer_to_port(mach_timer_t)
328 destructor: mach_timer_deallocate(mach_timer_t)
329 #endif /* KERNEL_SERVER */
330 ;
331
332 type expire_port_t = MACH_MSG_TYPE_COPY_SEND
333 ctype: mach_port_t;
334
335 type mach_timer_info_t = array[*:1024] of natural_t;
336
337 type mach_clock_t = mach_port_t
338 ctype: mach_port_t
339 #if KERNEL_SERVER
340 intran: mach_clock_t convert_device_port_to_clock(mach_port_t)
341 outtran: mach_port_t convert_clock_to_device_port(mach_clock_t)
342 #endif /* KERNEL_SERVER */
343 ;
344
345 type time_spec_t = struct[2] of natural_t;
346 type policy_param_t = array[*:1024] of natural_t;
347
348
349 #if KERNEL_SERVER
350 simport <kern/ipc_kobject.h>; /* for null conversion */
351 simport <kern/ipc_tt.h>; /* for task/thread conversion */
352 simport <kern/ipc_host.h>; /* for host/processor/pset conversions */
353 simport <kern/task.h>; /* for task_t */
354 simport <kern/thread.h>; /* for thread_t */
355 simport <kern/host.h>; /* for host_t */
356 simport <kern/processor.h>; /* for processor_t, processor_set_t */
357 simport <kern/clock.h>; /* mach_clock_t */
358 simport <kern/mach_timer.h>; /* mach_timer_t */
359 simport <vm/vm_object.h>; /* for vm_object_t */
360 simport <vm/vm_map.h>; /* for vm_map_t */
361 simport <ipc/ipc_space.h>; /* for ipc_space_t */
362 #endif /* KERNEL_SERVER */
363
364 import <mach/mach_types.h>;
365
366 #endif /* _MACH_MACH_TYPES_DEFS_ */
Cache object: 8cbe65f79c6a5e6485d2c75ff0e3117c
|