/*
- * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 1998-2014 Apple Computer, Inc. All rights reserved.
*
* @APPLE_OSREFERENCE_LICENSE_HEADER_START@
*
#endif /* KERNEL_SERVER */
iokit 2800;
+#if IOKITSIMD || KERNEL_SERVER
+#define IOKIT_ALL_IPC 1
+#endif
+
#include <mach/std_types.defs>
#include <mach/mach_types.defs>
#include <mach/clock_types.defs>
type io_name_t = c_string[*:128];
type io_string_t = c_string[*:512];
+type io_string_inband_t = c_string[*:4096];
type io_struct_inband_t = array[*:4096] of char;
type io_buf_ptr_t = ^array[] of MACH_MSG_TYPE_INTEGER_8;
type NDR_record_t = struct[8] of char;
#if KERNEL_SERVER
intran: io_connect_t iokit_lookup_connect_port(mach_port_t)
outtran: mach_port_t iokit_make_connect_port(io_connect_t)
- destructor: iokit_remove_reference(io_connect_t)
+ destructor: iokit_remove_connect_reference(io_connect_t)
#endif /* KERNEL_SERVER */
;
out service : io_object_t
);
-#if KERNEL_SERVER || __ILP32__
+#if IOKIT_ALL_IPC || __ILP32__
routine io_connect_set_notification_port(
connection : io_connect_t;
in notification_type : uint32_t;
connection : io_connect_t;
in memory_type : uint32_t;
in into_task : task_t;
-#if KERNEL_SERVER
+#if IOKIT_ALL_IPC
inout address : uint32_t;
inout size : uint32_t;
#else
out result : kern_return_t
);
-#if KERNEL_SERVER || (__ILP32__ && !MAP_32B_METHODS)
+#if IOKIT_ALL_IPC || __ILP32__
routine io_connect_method_scalarI_scalarO(
connection : io_connect_t;
in selector : uint32_t;
out matches : boolean_t
);
-#if KERNEL_SERVER || (__ILP32__ && !MAP_32B_ASYNC_METHODS)
+#if IOKIT_ALL_IPC || __ILP32__
routine io_async_method_scalarI_scalarO(
connection : io_connect_t;
in wake_port : mach_port_make_send_t;
skip;
#endif
-#if KERNEL_SERVER || __ILP32__
+#if IOKIT_ALL_IPC || __ILP32__
routine io_service_add_notification(
master_port : mach_port_t;
in notification_type : io_name_t;
out semaphore : semaphore_t
);
-#if KERNEL_SERVER || __ILP32__
+#if IOKIT_ALL_IPC || __ILP32__
routine io_connect_unmap_memory(
connection : io_connect_t;
in memory_type : uint32_t;
in into_task : task_t;
-#if KERNEL_SERVER
+#if IOKIT_ALL_IPC
in address : uint32_t
#else
in address : vm_address_t
out matches : boolean_t
);
-#if KERNEL_SERVER || __ILP32__
+#if IOKIT_ALL_IPC || __ILP32__
routine io_service_add_notification_ool(
master_port : mach_port_t;
in notification_type : io_name_t;
);
-#if KERNEL_SERVER || __LP64__
+#if IOKIT_ALL_IPC || __LP64__
-#if KERNEL_SERVER
+#if IOKIT_ALL_IPC
#define FUNC_NAME(name) name ## _64
#else
#define FUNC_NAME(name) name
skip;
skip;
-#endif /* KERNEL_SERVER || __LP64__ */
+#endif /* IOKIT_ALL_IPC || __LP64__ */
routine io_registry_entry_get_registry_entry_id(
registry_entry : io_object_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
+ );
+
+#endif
#endif /* IOKIT */