xref: /xnu-10002.1.13/osfmk/device/device.defs (revision 1031c584a5e37aff177559b9f69dbd3c8c3fd30a)
1/*
2 * Copyright (c) 1998-2014 Apple Computer, Inc. All rights reserved.
3 *
4 * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
5 *
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. The rights granted to you under the License
10 * may not be used to create, or enable the creation or redistribution of,
11 * unlawful or unlicensed copies of an Apple operating system, or to
12 * circumvent, violate, or enable the circumvention or violation of, any
13 * terms of an Apple operating system software license agreement.
14 *
15 * Please obtain a copy of the License at
16 * http://www.opensource.apple.com/apsl/ and read it before using this file.
17 *
18 * The Original Code and all software distributed under the License are
19 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
20 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
21 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
22 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
23 * Please see the License for the specific language governing rights and
24 * limitations under the License.
25 *
26 * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
27 */
28/*
29 * @OSF_COPYRIGHT@
30 */
31/*
32 * Mach Operating System
33 * Copyright (c) 1991,1990,1989 Carnegie Mellon University
34 * All Rights Reserved.
35 *
36 * Permission to use, copy, modify and distribute this software and its
37 * documentation is hereby granted, provided that both the copyright
38 * notice and this permission notice appear in all copies of the
39 * software, derivative works or modified versions, and any portions
40 * thereof, and that both notices appear in supporting documentation.
41 *
42 * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
43 * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
44 * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
45 *
46 * Carnegie Mellon requests users of this software to return to
47 *
48 *  Software Distribution Coordinator  or  [email protected]
49 *  School of Computer Science
50 *  Carnegie Mellon University
51 *  Pittsburgh PA 15213-3890
52 *
53 * any improvements or extensions that they make and grant Carnegie Mellon
54 * the rights to redistribute these changes.
55 */
56/*
57 * File:	device/device.defs
58 * Author:	Douglas Orr
59 *		Feb 10, 1988
60 * Abstract:
61 *	Mach device support.  Mach devices are accessed through
62 *	block and character device interfaces to the kernel.
63 */
64
65subsystem
66#if	KERNEL_SERVER || KOBJECT_SERVER
67	KernelServer
68#endif	/* KERNEL_SERVER || KOBJECT_SERVER */
69		       iokit 2800;
70
71#if IOKITSIMD || KERNEL_SERVER
72#define IOKIT_ALL_IPC 1
73#endif
74
75#include <mach/std_types.defs>
76#include <mach/mach_types.defs>
77#include <mach/clock_types.defs>
78#include <mach/clock_types.defs>
79
80#if !__LP64__
81#    define __ILP32__ 1
82#endif
83
84import <device/device_types.h>;
85
86serverprefix	is_;
87
88type reply_port_t = MACH_MSG_TYPE_MAKE_SEND_ONCE | polymorphic
89	ctype: mach_port_t;
90
91#if	IOKIT
92
93type io_name_t            = c_string[*:128];
94type io_string_t          = c_string[*:512];
95type io_string_inband_t   = c_string[*:4096];
96type io_struct_inband_t   = array[*:4096] of char;
97type io_buf_ptr_t	  = ^array[] of MACH_MSG_TYPE_INTEGER_8;
98type NDR_record_t         = struct[8] of char;
99
100#if KERNEL
101type io_user_scalar_t     = uint64_t;
102type io_user_reference_t  = uint64_t;
103type io_scalar_inband_t   = array[*:16] of int;
104// must be the same type as OSAsyncReference
105type io_async_ref_t 	  = array[*:8]  of natural_t;
106type io_scalar_inband64_t = array[*:16] of io_user_scalar_t;
107type io_async_ref64_t 	  = array[*:8]  of io_user_reference_t;
108#elif __LP64__
109type io_user_scalar_t     = uint64_t;
110type io_user_reference_t  = uint64_t;
111type io_scalar_inband_t   = array[*:16] of io_user_scalar_t;
112type io_async_ref_t 	  = array[*:8]  of io_user_reference_t;
113type io_scalar_inband64_t = array[*:16] of io_user_scalar_t;
114type io_async_ref64_t 	  = array[*:8]  of io_user_reference_t;
115#else
116type io_user_scalar_t     = int;
117type io_user_reference_t  = natural_t;
118type io_scalar_inband_t   = array[*:16] of io_user_scalar_t;
119type io_async_ref_t 	  = array[*:8]  of io_user_reference_t;
120type io_scalar_inband64_t = array[*:16] of uint64_t;
121type io_async_ref64_t 	  = array[*:8]  of uint64_t;
122#endif // __LP64__
123
124type io_object_t = mach_port_t
125		ctype: mach_port_t
126#if	KERNEL_SERVER
127		intran: io_object_t iokit_lookup_object_port(mach_port_t)
128		outtran: mach_port_t iokit_make_object_port(io_object_t)
129		destructor: iokit_remove_reference(io_object_t)
130#endif	/* KERNEL_SERVER */
131		;
132
133type io_connect_t = mach_port_t
134		ctype: mach_port_t
135#if	KERNEL_SERVER
136		intran: io_connect_t iokit_lookup_connect_port(mach_port_t)
137		outtran: mach_port_t iokit_make_connect_port(io_connect_t)
138		destructor: iokit_remove_connect_reference(io_connect_t)
139#endif	/* KERNEL_SERVER */
140		;
141
142type io_ident_t = mach_port_t
143		ctype: mach_port_t
144#if	KERNEL_SERVER
145		intran: io_ident_t iokit_lookup_ident_port(mach_port_t)
146		outtran: mach_port_t iokit_make_ident_port(io_ident_t)
147		destructor: iokit_remove_reference(io_ident_t)
148#endif	/* KERNEL_SERVER */
149		;
150
151routine io_object_get_class(
152	    object		: io_object_t;
153	out className		: io_name_t
154	);
155
156routine io_object_conforms_to(
157	    object		: io_object_t;
158	in  className		: io_name_t;
159	out conforms		: boolean_t
160	);
161
162routine io_iterator_next(
163	    iterator		: io_object_t;
164	out object		: io_object_t
165	);
166
167routine io_iterator_reset(
168	    iterator		: io_object_t
169	);
170
171routine io_service_get_matching_services(
172	    main_port		: mach_port_t;
173	in  matching		: io_string_t;
174	out existing		: io_object_t
175	);
176
177routine io_registry_entry_get_property(
178	    registry_entry	: io_object_t;
179	in  property_name	: io_name_t;
180	out properties		: io_buf_ptr_t, physicalcopy
181	);
182
183routine io_registry_create_iterator(
184	    main_port		: mach_port_t;
185	in  plane		: io_name_t;
186	in  options		: uint32_t;
187	out iterator		: io_object_t
188	);
189
190routine io_registry_iterator_enter_entry(
191	    iterator		: io_object_t
192	);
193
194routine io_registry_iterator_exit_entry(
195	    iterator		: io_object_t
196	);
197
198routine io_registry_entry_from_path(
199	    main_port		: mach_port_t;
200	in  path		: io_string_t;
201	out registry_entry	: io_object_t
202	);
203
204routine io_registry_entry_get_name(
205	    registry_entry	: io_object_t;
206	out name		: io_name_t
207	);
208
209routine io_registry_entry_get_properties(
210	    registry_entry	: io_object_t;
211	out properties		: io_buf_ptr_t, physicalcopy
212	);
213
214routine io_registry_entry_get_property_bytes(
215	    registry_entry	: io_object_t;
216	in  property_name	: io_name_t;
217	out data		: io_struct_inband_t, CountInOut
218	);
219
220routine io_registry_entry_get_child_iterator(
221	    registry_entry	: io_object_t;
222	in  plane		: io_name_t;
223	out iterator		: io_object_t
224	);
225
226routine io_registry_entry_get_parent_iterator(
227	    registry_entry	: io_object_t;
228	in  plane		: io_name_t;
229	out iterator		: io_object_t
230	);
231
232skip;
233/* was routine io_service_open
234	    service		: io_object_t;
235	in  owningTask		: task_t;
236	in  connect_type	: uint32_t;
237	out connection		: io_connect_t
238	);
239*/
240
241routine io_service_close(
242	    connection		: io_connect_t
243	);
244
245routine io_connect_get_service(
246	    connection		: io_connect_t;
247	out service		: io_object_t
248	);
249
250#if  IOKIT_ALL_IPC || __ILP32__
251routine io_connect_set_notification_port(
252	    connection		: io_connect_t;
253	in  notification_type	: uint32_t;
254	in  port		: mach_port_make_send_t;
255	in  reference		: uint32_t
256	);
257
258routine io_connect_map_memory(
259	    connection		: io_connect_t;
260	in  memory_type		: uint32_t;
261	in  into_task		: task_t;
262#if  IOKIT_ALL_IPC
263	inout address		: uint32_t;
264	inout size		: uint32_t;
265#else
266	inout address		: vm_address_t;
267	inout size		: vm_size_t;
268#endif
269	in  flags		: uint32_t
270	);
271#else
272skip;
273skip;
274#endif
275
276routine io_connect_add_client(
277	    connection		: io_connect_t;
278	in  connect_to		: io_connect_t
279	);
280
281routine io_connect_set_properties(
282	    connection		: io_connect_t;
283	in  properties		: io_buf_ptr_t, physicalcopy;
284        out result		: kern_return_t
285	);
286
287#if  IOKIT_ALL_IPC || __ILP32__
288routine io_connect_method_scalarI_scalarO(
289	    connection		: io_connect_t;
290	in  selector		: uint32_t;
291	in  input		: io_scalar_inband_t;
292	out output		: io_scalar_inband_t, CountInOut
293	);
294
295routine io_connect_method_scalarI_structureO(
296	    connection		: io_connect_t;
297	in  selector		: uint32_t;
298	in  input		: io_scalar_inband_t;
299	out output		: io_struct_inband_t, CountInOut
300	);
301
302routine io_connect_method_scalarI_structureI(
303	    connection		: io_connect_t;
304	in  selector		: uint32_t;
305	in  input		: io_scalar_inband_t;
306	in  inputStruct		: io_struct_inband_t
307	);
308
309routine io_connect_method_structureI_structureO(
310	    connection		: io_connect_t;
311	in  selector		: uint32_t;
312	in  input		: io_struct_inband_t;
313	out output		: io_struct_inband_t, CountInOut
314	);
315#else
316skip;
317skip;
318skip;
319skip;
320#endif
321
322routine io_registry_entry_get_path(
323	    registry_entry	: io_object_t;
324	in  plane		: io_name_t;
325	out path		: io_string_t
326	);
327
328routine io_registry_get_root_entry(
329	    main_port		: mach_port_t;
330	out root		: io_object_t
331	);
332
333routine io_registry_entry_set_properties(
334	    registry_entry	: io_object_t;
335	in  properties		: io_buf_ptr_t, physicalcopy;
336        out result		: kern_return_t
337	);
338
339routine io_registry_entry_in_plane(
340	    registry_entry	: io_object_t;
341	in  plane		: io_name_t;
342	out inPlane		: boolean_t
343	);
344
345routine io_object_get_retain_count(
346	    object		: io_object_t;
347	out retainCount		: uint32_t
348	);
349
350routine io_service_get_busy_state(
351	    service		: io_object_t;
352	out busyState		: uint32_t
353	);
354
355routine io_service_wait_quiet(
356	    service		: io_object_t;
357	    wait_time		: mach_timespec_t
358	);
359
360routine io_registry_entry_create_iterator(
361	    registry_entry	: io_object_t;
362	in  plane		: io_name_t;
363	in  options		: uint32_t;
364	out iterator		: io_object_t
365	);
366
367routine io_iterator_is_valid(
368	    iterator		: io_object_t;
369	out is_valid		: boolean_t
370	);
371
372skip;
373/* was routine io_make_matching(
374	    main_port		: mach_port_t;
375	in  of_type		: uint32_t;
376	in  options		: uint32_t;
377	in  input		: io_struct_inband_t;
378	out matching		: io_string_t
379	);
380*/
381
382routine io_catalog_send_data(
383	    main_port		: mach_port_t;
384        in  flag                : uint32_t;
385	in  inData		: io_buf_ptr_t;
386        out result		: kern_return_t
387	);
388
389routine io_catalog_terminate(
390	    main_port		: mach_port_t;
391        in  flag                : uint32_t;
392	in  name		: io_name_t
393	);
394
395routine io_catalog_get_data(
396	    main_port		: mach_port_t;
397        in  flag                : uint32_t;
398	out outData		: io_buf_ptr_t
399	);
400
401routine io_catalog_get_gen_count(
402	    main_port		: mach_port_t;
403        out genCount            : uint32_t
404	);
405
406routine io_catalog_module_loaded(
407	    main_port		: mach_port_t;
408	in  name		: io_name_t
409	);
410
411routine io_catalog_reset(
412	    main_port		: mach_port_t;
413	in  flag		: uint32_t
414	);
415
416routine io_service_request_probe(
417	    service		: io_object_t;
418	in  options		: uint32_t
419	);
420
421routine io_registry_entry_get_name_in_plane(
422	    registry_entry	: io_object_t;
423	in  plane		: io_name_t;
424	out name		: io_name_t
425	);
426
427routine io_service_match_property_table(
428	    service		: io_object_t;
429	in  matching		: io_string_t;
430	out matches		: boolean_t
431	);
432
433#if  IOKIT_ALL_IPC || __ILP32__
434routine io_async_method_scalarI_scalarO(
435	    connection		: io_connect_t;
436	in  wake_port		: mach_port_make_send_t;
437	in  reference		: io_async_ref_t;
438	in  selector		: uint32_t;
439	in  input		: io_scalar_inband_t;
440	out output		: io_scalar_inband_t, CountInOut
441	);
442routine io_async_method_scalarI_structureO(
443	    connection		: io_connect_t;
444	in  wake_port		: mach_port_make_send_t;
445	in  reference		: io_async_ref_t;
446	in  selector		: uint32_t;
447	in  input		: io_scalar_inband_t;
448	out output		: io_struct_inband_t, CountInOut
449	);
450routine io_async_method_scalarI_structureI(
451	    connection		: io_connect_t;
452	in  wake_port		: mach_port_make_send_t;
453	in  reference		: io_async_ref_t;
454	in  selector		: uint32_t;
455	in  input		: io_scalar_inband_t;
456	in  inputStruct		: io_struct_inband_t
457	);
458routine io_async_method_structureI_structureO(
459	    connection		: io_connect_t;
460	in  wake_port		: mach_port_make_send_t;
461	in  reference		: io_async_ref_t;
462	in  selector		: uint32_t;
463	in  input		: io_struct_inband_t;
464	out output		: io_struct_inband_t, CountInOut
465	);
466#else
467skip;
468skip;
469skip;
470skip;
471#endif
472
473#if IOKIT_ALL_IPC || __ILP32__
474routine io_service_add_notification(
475	    main_port		: mach_port_t;
476	in  notification_type	: io_name_t;
477	in  matching		: io_string_t;
478	in  wake_port		: mach_port_make_send_t;
479	in  reference		: io_async_ref_t;
480	out notification	: io_object_t
481	);
482routine io_service_add_interest_notification(
483	    service		: io_object_t;
484	in  type_of_interest	: io_name_t;
485	in  wake_port		: mach_port_make_send_t;
486	in  reference		: io_async_ref_t;
487	out notification	: io_object_t
488        );
489routine io_service_acknowledge_notification(
490           service             : io_object_t;
491       in  notify_ref          : natural_t;
492       in  response            : natural_t
493        );
494#else
495skip;
496skip;
497skip;
498#endif
499
500routine io_connect_get_notification_semaphore(
501	    connection		: io_connect_t;
502	in  notification_type	: natural_t;
503	out semaphore		: semaphore_t
504	);
505
506#if IOKIT_ALL_IPC || __ILP32__
507routine io_connect_unmap_memory(
508	    connection		: io_connect_t;
509	in  memory_type		: uint32_t;
510	in  into_task		: task_t;
511#if IOKIT_ALL_IPC
512	in  address		: uint32_t
513#else
514	in  address		: vm_address_t
515#endif
516	);
517#else
518skip;
519#endif
520
521routine io_registry_entry_get_location_in_plane(
522	    registry_entry	: io_object_t;
523	in  plane		: io_name_t;
524	out location		: io_name_t
525	);
526
527routine io_registry_entry_get_property_recursively(
528	    registry_entry	: io_object_t;
529	in  plane		: io_name_t;
530	in  property_name	: io_name_t;
531	in  options		: uint32_t;
532	out properties		: io_buf_ptr_t, physicalcopy
533	);
534
535routine io_service_get_state(
536	    service		: io_object_t;
537	out state		: uint64_t;
538	out busy_state		: uint32_t;
539	out accumulated_busy_time : uint64_t
540	);
541
542routine io_service_get_matching_services_ool(
543	    main_port		: mach_port_t;
544	in  matching		: io_buf_ptr_t, physicalcopy;
545        out result		: kern_return_t;
546	out existing		: io_object_t
547	);
548
549routine io_service_match_property_table_ool(
550	    service		: io_object_t;
551	in  matching		: io_buf_ptr_t, physicalcopy;
552        out result		: kern_return_t;
553	out matches		: boolean_t
554	);
555
556#if IOKIT_ALL_IPC || __ILP32__
557routine io_service_add_notification_ool(
558	    main_port		: mach_port_t;
559	in  notification_type	: io_name_t;
560	in  matching		: io_buf_ptr_t, physicalcopy;
561	in  wake_port		: mach_port_make_send_t;
562	in  reference		: io_async_ref_t;
563        out result		: kern_return_t;
564	out notification	: io_object_t
565	);
566#else
567skip;
568#endif
569
570routine io_object_get_superclass(
571	    main_port		: mach_port_t;
572	in  obj_name			: io_name_t;
573	out class_name          : io_name_t
574        );
575
576routine io_object_get_bundle_identifier(
577	    main_port		: mach_port_t;
578	in  obj_name			: io_name_t;
579	out class_name          : io_name_t
580        );
581
582routine io_service_open_extended(
583	    service		: io_object_t;
584	in  owningTask		: task_t;
585	in  connect_type	: uint32_t;
586	in  ndr			: NDR_record_t;
587	in  properties		: io_buf_ptr_t, physicalcopy;
588        out result		: kern_return_t;
589	out connection		: io_connect_t
590	);
591
592
593/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
594
595routine io_connect_map_memory_into_task(
596	    connection		: io_connect_t;
597	in  memory_type		: uint32_t;
598	in  into_task		: task_t;
599	inout address		: mach_vm_address_t;
600	inout size		: mach_vm_size_t;
601	in  flags		: uint32_t
602	);
603
604routine io_connect_unmap_memory_from_task(
605	    connection		: io_connect_t;
606	in  memory_type		: uint32_t;
607	in  from_task		: task_t;
608	in  address		: mach_vm_address_t
609	);
610
611routine io_connect_method(
612	    connection		: io_connect_t;
613	in  selector		: uint32_t;
614
615	in  scalar_input	: io_scalar_inband64_t;
616	in  inband_input	: io_struct_inband_t;
617	in  ool_input		: mach_vm_address_t;
618	in  ool_input_size	: mach_vm_size_t;
619
620	out inband_output	: io_struct_inband_t, CountInOut;
621	out scalar_output	: io_scalar_inband64_t, CountInOut;
622	in  ool_output		: mach_vm_address_t;
623	inout ool_output_size	: mach_vm_size_t
624	);
625
626routine io_connect_async_method(
627	    connection		: io_connect_t;
628	in  wake_port		: mach_port_make_send_t;
629	in  reference		: io_async_ref64_t;
630	in  selector		: uint32_t;
631
632	in  scalar_input	: io_scalar_inband64_t;
633	in  inband_input	: io_struct_inband_t;
634	in  ool_input		: mach_vm_address_t;
635	in  ool_input_size	: mach_vm_size_t;
636
637	out inband_output	: io_struct_inband_t, CountInOut;
638	out scalar_output	: io_scalar_inband64_t, CountInOut;
639	in  ool_output		: mach_vm_address_t;
640	inout  ool_output_size	: mach_vm_size_t
641	);
642
643
644#if IOKIT_ALL_IPC || __LP64__
645
646#if IOKIT_ALL_IPC
647#define FUNC_NAME(name) name ## _64
648#else
649#define FUNC_NAME(name) name
650#endif
651
652routine FUNC_NAME(io_connect_set_notification_port)(
653	    connection		: io_connect_t;
654	in  notification_type	: uint32_t;
655	in  port		: mach_port_make_send_t;
656	in  reference		: io_user_reference_t
657	);
658
659routine FUNC_NAME(io_service_add_notification)(
660	    main_port		: mach_port_t;
661	in  notification_type	: io_name_t;
662	in  matching		: io_string_t;
663	in  wake_port		: mach_port_make_send_t;
664	in  reference		: io_async_ref64_t;
665	out notification	: io_object_t
666	);
667
668routine FUNC_NAME(io_service_add_interest_notification)(
669	    service		: io_object_t;
670	in  type_of_interest	: io_name_t;
671	in  wake_port		: mach_port_make_send_t;
672	in  reference		: io_async_ref64_t;
673	out notification	: io_object_t
674	);
675
676routine FUNC_NAME(io_service_add_notification_ool)(
677	    main_port		: mach_port_t;
678	in  notification_type	: io_name_t;
679	in  matching		: io_buf_ptr_t, physicalcopy;
680	in  wake_port		: mach_port_make_send_t;
681	in  reference		: io_async_ref64_t;
682        out result		: kern_return_t;
683	out notification	: io_object_t
684	);
685
686#else
687
688    skip;
689    skip;
690    skip;
691    skip;
692
693#endif /* IOKIT_ALL_IPC || __LP64__ */
694
695routine io_registry_entry_get_registry_entry_id(
696	    registry_entry	: io_object_t;
697	out entry_id		: uint64_t
698	);
699
700routine io_connect_method_var_output(
701	    connection		: io_connect_t;
702	in  selector		: uint32_t;
703
704	in  scalar_input	: io_scalar_inband64_t;
705	in  inband_input	: io_struct_inband_t;
706	in  ool_input		: mach_vm_address_t;
707	in  ool_input_size	: mach_vm_size_t;
708
709	out inband_output	: io_struct_inband_t, CountInOut;
710	out scalar_output	: io_scalar_inband64_t, CountInOut;
711	out var_output		: io_buf_ptr_t, physicalcopy
712	);
713
714routine io_service_get_matching_service(
715	    main_port		: mach_port_t;
716	in  matching		: io_string_t;
717	out service		: io_object_t
718	);
719
720routine io_service_get_matching_service_ool(
721	    main_port		: mach_port_t;
722	in  matching		: io_buf_ptr_t, physicalcopy;
723        out result		: kern_return_t;
724	out service		: io_object_t
725	);
726
727routine io_service_get_authorization_id(
728	    service		: io_object_t;
729	out authorization_id	: uint64_t
730	);
731
732routine io_service_set_authorization_id(
733	    service		: io_object_t;
734	in  authorization_id	: uint64_t
735	);
736
737/* */
738
739routine io_server_version(
740	    main_port		: mach_port_t;
741	out version		: uint64_t
742	);
743
744routine io_registry_entry_get_properties_bin(
745	    registry_entry	: io_object_t;
746	out properties		: io_buf_ptr_t, physicalcopy
747	);
748
749routine io_registry_entry_get_property_bin(
750	    registry_entry	: io_object_t;
751	in  plane		: io_name_t;
752	in  property_name	: io_name_t;
753	in  options		: uint32_t;
754	out properties		: io_buf_ptr_t, physicalcopy
755	);
756
757routine io_service_get_matching_service_bin(
758	    main_port		: mach_port_t;
759	in  matching		: io_struct_inband_t;
760	out service		: io_object_t
761	);
762
763routine io_service_get_matching_services_bin(
764	    main_port		: mach_port_t;
765	in  matching		: io_struct_inband_t;
766	out existing		: io_object_t
767	);
768
769routine io_service_match_property_table_bin(
770	    service		: io_object_t;
771	in  matching		: io_struct_inband_t;
772	out matches		: boolean_t
773	);
774
775#if IOKIT_ALL_IPC || __ILP32__
776routine io_service_add_notification_bin(
777	    main_port		: mach_port_t;
778	in  notification_type	: io_name_t;
779	in  matching		: io_struct_inband_t;
780	in  wake_port		: mach_port_make_send_t;
781	in  reference		: io_async_ref_t;
782	out notification	: io_object_t
783	);
784#else
785skip;
786#endif
787
788#if IOKIT_ALL_IPC || __LP64__
789routine FUNC_NAME(io_service_add_notification_bin)(
790	    main_port		: mach_port_t;
791	in  notification_type	: io_name_t;
792	in  matching		: io_struct_inband_t;
793	in  wake_port		: mach_port_make_send_t;
794	in  reference		: io_async_ref64_t;
795	out notification	: io_object_t
796	);
797#else
798skip;
799#endif
800
801#if !IOKITSIMD
802
803routine io_registry_entry_get_path_ool(
804	    registry_entry	: io_object_t;
805	in  plane		: io_name_t;
806	out path		: io_string_inband_t;
807	out path_ool		: io_buf_ptr_t, physicalcopy
808	);
809
810routine io_registry_entry_from_path_ool(
811	    main_port		: mach_port_t;
812	in  path                : io_string_inband_t;
813	in  path_ool		: io_buf_ptr_t, physicalcopy;
814        out result		: kern_return_t;
815	out registry_entry	: io_object_t
816	);
817
818#endif
819
820routine io_device_tree_entry_exists_with_name(
821	    main_port		: mach_port_t;
822	in  name		: io_name_t;
823	out exists		: boolean_t
824	);
825
826routine io_registry_entry_get_properties_bin_buf(
827	    registry_entry	: io_object_t;
828	in  buf			: mach_vm_address_t;
829	inout  bufsize		: mach_vm_size_t;
830	out properties		: io_buf_ptr_t, physicalcopy
831	);
832
833routine io_registry_entry_get_property_bin_buf(
834	    registry_entry	: io_object_t;
835	in  plane		: io_name_t;
836	in  property_name	: io_name_t;
837	in  options		: uint32_t;
838	in  buf			: mach_vm_address_t;
839	inout  bufsize		: mach_vm_size_t;
840	out properties		: io_buf_ptr_t, physicalcopy
841	);
842
843routine io_service_wait_quiet_with_options(
844            service		: io_object_t;
845	in  wait_time		: mach_timespec_t;
846	in  options		: uint32_t
847	);
848
849#endif /* IOKIT */
850
851/* vim: set ft=c : */
852