+routine io_service_open_extended(
+ service : io_object_t;
+ in owningTask : task_t;
+ in connect_type : uint32_t;
+ in ndr : NDR_record_t;
+ in properties : io_buf_ptr_t, physicalcopy;
+ out result : kern_return_t;
+ out connection : io_connect_t
+ );
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+routine io_connect_map_memory_into_task(
+ connection : io_connect_t;
+ in memory_type : uint32_t;
+ in into_task : task_t;
+ inout address : mach_vm_address_t;
+ inout size : mach_vm_size_t;
+ in flags : uint32_t
+ );
+
+routine io_connect_unmap_memory_from_task(
+ connection : io_connect_t;
+ in memory_type : uint32_t;
+ in from_task : task_t;
+ in address : mach_vm_address_t
+ );
+
+routine io_connect_method(
+ connection : io_connect_t;
+ in selector : uint32_t;
+
+ in scalar_input : io_scalar_inband64_t;
+ in inband_input : io_struct_inband_t;
+ in ool_input : mach_vm_address_t;
+ in ool_input_size : mach_vm_size_t;
+
+ out inband_output : io_struct_inband_t, CountInOut;
+ out scalar_output : io_scalar_inband64_t, CountInOut;
+ in ool_output : mach_vm_address_t;
+ inout ool_output_size : mach_vm_size_t
+ );
+
+routine io_connect_async_method(
+ connection : io_connect_t;
+ in wake_port : mach_port_make_send_t;
+ in reference : io_async_ref64_t;
+ in selector : uint32_t;
+
+ in scalar_input : io_scalar_inband64_t;
+ in inband_input : io_struct_inband_t;
+ in ool_input : mach_vm_address_t;
+ in ool_input_size : mach_vm_size_t;
+
+ out inband_output : io_struct_inband_t, CountInOut;
+ out scalar_output : io_scalar_inband64_t, CountInOut;
+ in ool_output : mach_vm_address_t;
+ inout ool_output_size : mach_vm_size_t
+ );
+
+
+#if IOKIT_ALL_IPC || __LP64__
+
+#if IOKIT_ALL_IPC
+#define FUNC_NAME(name) name ## _64
+#else
+#define FUNC_NAME(name) name
+#endif
+
+routine FUNC_NAME(io_connect_set_notification_port)(
+ connection : io_connect_t;
+ in notification_type : uint32_t;
+ in port : mach_port_make_send_t;
+ in reference : io_user_reference_t
+ );
+
+routine FUNC_NAME(io_service_add_notification)(
+ master_port : mach_port_t;
+ in notification_type : io_name_t;
+ in matching : io_string_t;
+ in wake_port : mach_port_make_send_t;
+ in reference : io_async_ref64_t;
+ out notification : io_object_t
+ );
+
+routine FUNC_NAME(io_service_add_interest_notification)(
+ service : io_object_t;
+ in type_of_interest : io_name_t;
+ in wake_port : mach_port_make_send_t;
+ in reference : io_async_ref64_t;
+ out notification : io_object_t
+ );
+
+routine FUNC_NAME(io_service_add_notification_ool)(
+ master_port : mach_port_t;
+ in notification_type : io_name_t;
+ in matching : io_buf_ptr_t, physicalcopy;
+ in wake_port : mach_port_make_send_t;
+ in reference : io_async_ref64_t;
+ out result : kern_return_t;
+ out notification : io_object_t
+ );
+
+#else
+
+ skip;
+ skip;
+ skip;
+ skip;
+
+#endif /* IOKIT_ALL_IPC || __LP64__ */
+
+routine io_registry_entry_get_registry_entry_id(
+ registry_entry : io_object_t;
+ out entry_id : uint64_t
+ );
+
+routine io_connect_method_var_output(
+ connection : io_connect_t;
+ in selector : uint32_t;
+
+ in scalar_input : io_scalar_inband64_t;
+ in inband_input : io_struct_inband_t;
+ in ool_input : mach_vm_address_t;
+ in ool_input_size : mach_vm_size_t;
+
+ out inband_output : io_struct_inband_t, CountInOut;
+ out scalar_output : io_scalar_inband64_t, CountInOut;
+ out var_output : io_buf_ptr_t, physicalcopy
+ );
+
+routine io_service_get_matching_service(
+ master_port : mach_port_t;
+ in matching : io_string_t;
+ out service : io_object_t
+ );
+
+routine io_service_get_matching_service_ool(
+ master_port : mach_port_t;
+ in matching : io_buf_ptr_t, physicalcopy;
+ out result : kern_return_t;
+ out service : io_object_t
+ );
+
+routine io_service_get_authorization_id(
+ service : io_object_t;
+ out authorization_id : uint64_t
+ );
+
+routine io_service_set_authorization_id(
+ service : io_object_t;
+ in authorization_id : uint64_t
+ );
+
+/* */
+
+routine io_server_version(
+ master_port : mach_port_t;
+ out version : uint64_t
+ );
+
+routine io_registry_entry_get_properties_bin(
+ registry_entry : io_object_t;
+ out properties : io_buf_ptr_t, physicalcopy
+ );
+
+routine io_registry_entry_get_property_bin(
+ registry_entry : io_object_t;
+ in plane : io_name_t;
+ in property_name : io_name_t;
+ in options : uint32_t;
+ out properties : io_buf_ptr_t, physicalcopy
+ );
+
+routine io_service_get_matching_service_bin(
+ master_port : mach_port_t;
+ in matching : io_struct_inband_t;
+ out service : io_object_t
+ );
+
+routine io_service_get_matching_services_bin(
+ master_port : mach_port_t;
+ in matching : io_struct_inband_t;
+ out existing : io_object_t
+ );
+
+routine io_service_match_property_table_bin(
+ service : io_object_t;
+ in matching : io_struct_inband_t;
+ out matches : boolean_t
+ );
+
+#if IOKIT_ALL_IPC || __ILP32__
+routine io_service_add_notification_bin(
+ master_port : mach_port_t;
+ in notification_type : io_name_t;
+ in matching : io_struct_inband_t;
+ in wake_port : mach_port_make_send_t;
+ in reference : io_async_ref_t;
+ out notification : io_object_t
+ );
+#else
+skip;
+#endif
+
+#if IOKIT_ALL_IPC || __LP64__
+routine FUNC_NAME(io_service_add_notification_bin)(
+ master_port : mach_port_t;
+ in notification_type : io_name_t;
+ in matching : io_struct_inband_t;
+ in wake_port : mach_port_make_send_t;
+ in reference : io_async_ref64_t;
+ out notification : io_object_t
+ );
+#else
+skip;
+#endif
+
+#if !IOKITSIMD
+
+routine io_registry_entry_get_path_ool(
+ registry_entry : io_object_t;
+ in plane : io_name_t;
+ out path : io_string_inband_t;
+ out path_ool : io_buf_ptr_t, physicalcopy
+ );
+
+routine io_registry_entry_from_path_ool(
+ master_port : mach_port_t;
+ in path : io_string_inband_t;
+ in path_ool : io_buf_ptr_t, physicalcopy;
+ out result : kern_return_t;
+ out registry_entry : io_object_t
+ );
+