|
|
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 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: * File: device/device.defs
52: * Author: Douglas Orr
53: * Feb 10, 1988
54: * Abstract:
55: * Mach device support. Mach devices are accessed through
56: * block and character device interfaces to the kernel.
57: */
58:
59: subsystem
60: #if KERNEL_SERVER
61: KernelServer
62: #endif /* KERNEL_SERVER */
63: iokit 2800;
64:
65: #include <mach/std_types.defs>
66: #include <mach/mach_types.defs>
67: #include <mach/clock_types.defs>
68: #include <mach/clock_types.defs>
69:
70: import <device/device_types.h>;
71:
72: serverprefix is_;
73:
74: type reply_port_t = MACH_MSG_TYPE_MAKE_SEND_ONCE | polymorphic
75: ctype: mach_port_t;
76:
77: #if IOKIT
78:
79: type io_name_t = c_string[*:128];
80: type io_string_t = c_string[*:512];
81: type io_struct_inband_t = array[*:4096] of char;
82: type io_scalar_inband_t = array[*:16] of int;
83: type io_async_ref_t = array[*:8] of natural_t;
84: type io_buf_ptr_t = ^array[] of MACH_MSG_TYPE_INTEGER_8;
85:
86: type io_object_t = mach_port_t
87: ctype: mach_port_t
88: #if KERNEL_SERVER
89: intran: io_object_t iokit_lookup_object_port(mach_port_t)
90: outtran: mach_port_t iokit_make_object_port(io_object_t)
91: destructor: iokit_remove_reference(io_object_t)
92: #endif /* KERNEL_SERVER */
93: ;
94:
95: type io_connect_t = mach_port_t
96: ctype: mach_port_t
97: #if KERNEL_SERVER
98: intran: io_connect_t iokit_lookup_connect_port(mach_port_t)
99: outtran: mach_port_t iokit_make_connect_port(io_connect_t)
100: destructor: iokit_remove_reference(io_connect_t)
101: #endif /* KERNEL_SERVER */
102: ;
103:
104: routine io_object_get_class(
105: object : io_object_t;
106: out className : io_name_t
107: );
108:
109: routine io_object_conforms_to(
110: object : io_object_t;
111: in className : io_name_t;
112: out conforms : boolean_t
113: );
114:
115: routine io_iterator_next(
116: iterator : io_object_t;
117: out object : io_object_t
118: );
119:
120: routine io_iterator_reset(
121: iterator : io_object_t
122: );
123:
124: routine io_service_get_matching_services(
125: master_port : mach_port_t;
126: in matching : io_string_t;
127: out existing : io_object_t
128: );
129:
130: routine io_service_add_notification_old(
131: master_port : mach_port_t;
132: in notification_type : io_name_t;
133: in matching : io_string_t;
134: in wake_port : mach_port_make_send_t;
135: in reference : natural_t;
136: out notification : io_object_t
137: );
138:
139: routine io_registry_create_iterator(
140: master_port : mach_port_t;
141: in plane : io_name_t;
142: in options : int;
143: out iterator : io_object_t
144: );
145:
146: routine io_registry_iterator_enter_entry(
147: iterator : io_object_t
148: );
149:
150: routine io_registry_iterator_exit_entry(
151: iterator : io_object_t
152: );
153:
154: routine io_registry_entry_from_path(
155: master_port : mach_port_t;
156: in path : io_string_t;
157: out registry_entry : io_object_t
158: );
159:
160: routine io_registry_entry_get_name(
161: registry_entry : io_object_t;
162: out name : io_name_t
163: );
164:
165: routine io_registry_entry_get_properties(
166: registry_entry : io_object_t;
167: out properties : io_buf_ptr_t, physicalcopy
168: );
169:
170: routine io_registry_entry_get_property(
171: registry_entry : io_object_t;
172: in property_name : io_name_t;
173: out data : io_struct_inband_t, CountInOut
174: );
175:
176: routine io_registry_entry_get_child_iterator(
177: registry_entry : io_object_t;
178: in plane : io_name_t;
179: out iterator : io_object_t
180: );
181:
182: routine io_registry_entry_get_parent_iterator(
183: registry_entry : io_object_t;
184: in plane : io_name_t;
185: out iterator : io_object_t
186: );
187:
188: routine io_service_open(
189: service : io_object_t;
190: in owningTask : task_t;
191: in connect_type : int;
192: out connection : io_connect_t
193: );
194:
195: routine io_service_close(
196: connection : io_connect_t
197: );
198:
199: routine io_connect_get_service(
200: connection : io_connect_t;
201: out service : io_object_t
202: );
203:
204: routine io_connect_set_notification_port(
205: connection : io_connect_t;
206: in notification_type : int;
207: in port : mach_port_make_send_t;
208: in reference : int
209: );
210:
211: routine io_connect_map_memory(
212: connection : io_connect_t;
213: in memory_type : int;
214: in into_task : task_t;
215: inout address : vm_address_t;
216: inout size : vm_size_t;
217: in flags : int
218: );
219:
220: routine io_connect_add_client(
221: connection : io_connect_t;
222: in connect_to : io_connect_t
223: );
224:
225: routine io_connect_set_properties(
226: connection : io_connect_t;
227: in properties : io_buf_ptr_t, physicalcopy
228: );
229:
230:
231: routine io_connect_method_scalarI_scalarO(
232: connection : io_connect_t;
233: in selector : int;
234: in input : io_scalar_inband_t;
235: out output : io_scalar_inband_t, CountInOut
236: );
237:
238: routine io_connect_method_scalarI_structureO(
239: connection : io_connect_t;
240: in selector : int;
241: in input : io_scalar_inband_t;
242: out output : io_struct_inband_t, CountInOut
243: );
244:
245: routine io_connect_method_scalarI_structureI(
246: connection : io_connect_t;
247: in selector : int;
248: in input : io_scalar_inband_t;
249: in inputStruct : io_struct_inband_t
250: );
251:
252: routine io_connect_method_structureI_structureO(
253: connection : io_connect_t;
254: in selector : int;
255: in input : io_struct_inband_t;
256: out output : io_struct_inband_t, CountInOut
257: );
258:
259: routine io_registry_entry_get_path(
260: registry_entry : io_object_t;
261: in plane : io_name_t;
262: out path : io_string_t
263: );
264:
265: routine io_registry_get_root_entry(
266: master_port : mach_port_t;
267: out root : io_object_t
268: );
269:
270: routine io_registry_entry_set_properties(
271: registry_entry : io_object_t;
272: in properties : io_buf_ptr_t, physicalcopy
273: );
274:
275: routine io_registry_entry_in_plane(
276: registry_entry : io_object_t;
277: in plane : io_name_t;
278: out inPlane : boolean_t
279: );
280:
281: routine io_object_get_retain_count(
282: object : io_object_t;
283: out retainCount : int
284: );
285:
286: routine io_service_get_busy_state(
287: service : io_object_t;
288: out busyState : int
289: );
290:
291: routine io_service_wait_quiet(
292: service : io_object_t;
293: wait_time : mach_timespec_t
294: );
295:
296: routine io_registry_entry_create_iterator(
297: registry_entry : io_object_t;
298: in plane : io_name_t;
299: in options : int;
300: out iterator : io_object_t
301: );
302:
303: routine io_iterator_is_valid(
304: iterator : io_object_t;
305: out is_valid : boolean_t
306: );
307:
308: routine io_make_matching(
309: master_port : mach_port_t;
310: in of_type : int;
311: in options : int;
312: in input : io_struct_inband_t;
313: out matching : io_string_t
314: );
315:
316: routine io_catalog_send_data(
317: master_port : mach_port_t;
318: in flag : int;
319: in inData : io_buf_ptr_t
320: );
321:
322: routine io_catalog_terminate(
323: master_port : mach_port_t;
324: in flag : int;
325: in name : io_name_t
326: );
327:
328: routine io_catalog_get_data(
329: master_port : mach_port_t;
330: in flag : int;
331: out outData : io_buf_ptr_t
332: );
333:
334: routine io_catalog_get_gen_count(
335: master_port : mach_port_t;
336: out genCount : int
337: );
338:
339: routine io_catalog_module_loaded(
340: master_port : mach_port_t;
341: in name : io_name_t
342: );
343:
344: routine io_catalog_reset(
345: master_port : mach_port_t;
346: in flag : int
347: );
348:
349: routine io_service_request_probe(
350: service : io_object_t;
351: in options : int
352: );
353:
354: routine io_registry_entry_get_name_in_plane(
355: registry_entry : io_object_t;
356: in plane : io_name_t;
357: out name : io_name_t
358: );
359:
360: routine io_service_match_property_table(
361: service : io_object_t;
362: in matching : io_string_t;
363: out matches : boolean_t
364: );
365:
366: routine io_async_method_scalarI_scalarO(
367: connection : io_connect_t;
368: in wake_port : mach_port_make_send_t;
369: in reference : io_async_ref_t;
370: in selector : int;
371: in input : io_scalar_inband_t;
372: out output : io_scalar_inband_t, CountInOut
373: );
374:
375: routine io_async_method_scalarI_structureO(
376: connection : io_connect_t;
377: in wake_port : mach_port_make_send_t;
378: in reference : io_async_ref_t;
379: in selector : int;
380: in input : io_scalar_inband_t;
381: out output : io_struct_inband_t, CountInOut
382: );
383:
384: routine io_async_method_scalarI_structureI(
385: connection : io_connect_t;
386: in wake_port : mach_port_make_send_t;
387: in reference : io_async_ref_t;
388: in selector : int;
389: in input : io_scalar_inband_t;
390: in inputStruct : io_struct_inband_t
391: );
392:
393: routine io_async_method_structureI_structureO(
394: connection : io_connect_t;
395: in wake_port : mach_port_make_send_t;
396: in reference : io_async_ref_t;
397: in selector : int;
398: in input : io_struct_inband_t;
399: out output : io_struct_inband_t, CountInOut
400: );
401:
402: routine io_service_add_notification(
403: master_port : mach_port_t;
404: in notification_type : io_name_t;
405: in matching : io_string_t;
406: in wake_port : mach_port_make_send_t;
407: in reference : io_async_ref_t;
408: out notification : io_object_t
409: );
410:
411: routine io_service_add_interest_notification(
412: service : io_object_t;
413: in type_of_interest : io_name_t;
414: in wake_port : mach_port_make_send_t;
415: in reference : io_async_ref_t;
416: out notification : io_object_t
417: );
418:
419: routine io_service_acknowledge_notification(
420: service : io_object_t;
421: in notify_ref : natural_t;
422: in response : natural_t
423: );
424:
425: routine io_connect_get_notification_semaphore(
426: connection : io_connect_t;
427: in notification_type : natural_t;
428: out semaphore : semaphore_t
429: );
430:
431: #endif
432:
433:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.