1 /* 2 * Copyright (c) 2000-2004 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 */ 58 /* 59 * Author: David B. Golub, Carnegie Mellon University 60 * Date: 3/89 61 */ 62 63 #ifndef DEVICE_TYPES_H 64 #define DEVICE_TYPES_H 65 66 /* 67 * Types for device interface. 68 */ 69 #include <mach/std_types.h> 70 #include <mach/mach_types.h> 71 #include <mach/message.h> 72 #include <mach/port.h> 73 #ifdef MACH_KERNEL_PRIVATE 74 #include <mach_debug/mach_debug_types.h> 75 #endif 76 #include <stdint.h> 77 78 #if PRIVATE 79 #define IOKIT_SERVER_VERSION 20190926 80 #endif 81 82 83 /* 84 * IO buffer - out-of-line array of characters. 85 */ 86 typedef char * io_buf_ptr_t; 87 88 /* 89 * Some types for IOKit. 90 */ 91 92 #ifdef IOKIT 93 94 /* must match device_types.defs */ 95 typedef char io_name_t[128]; 96 typedef char io_string_t[512]; 97 typedef char io_string_inband_t[4096]; 98 typedef char io_struct_inband_t[4096]; 99 100 #if KERNEL 101 typedef uint64_t io_user_scalar_t; 102 typedef uint64_t io_user_reference_t __kernel_ptr_semantics; 103 typedef int io_scalar_inband_t[16]; 104 // must be the same type as OSAsyncReference 105 typedef natural_t io_async_ref_t[8] __kernel_ptr_semantics; 106 typedef io_user_scalar_t io_scalar_inband64_t[16]; 107 typedef io_user_reference_t io_async_ref64_t[8]; 108 #elif __LP64__ 109 typedef uint64_t io_user_scalar_t; 110 typedef uint64_t io_user_reference_t; 111 typedef io_user_scalar_t io_scalar_inband_t[16]; 112 typedef io_user_reference_t io_async_ref_t[8]; 113 typedef io_user_scalar_t io_scalar_inband64_t[16]; 114 typedef io_user_reference_t io_async_ref64_t[8]; 115 #else 116 typedef int io_user_scalar_t; 117 typedef natural_t io_user_reference_t; 118 typedef io_user_scalar_t io_scalar_inband_t[16]; 119 typedef io_user_reference_t io_async_ref_t[8]; 120 typedef uint64_t io_scalar_inband64_t[16]; 121 typedef uint64_t io_async_ref64_t[8]; 122 #endif // __LP64__ 123 124 #ifdef MACH_KERNEL_PRIVATE 125 126 typedef struct IOObject * io_object_t; 127 typedef io_object_t io_connect_t; 128 typedef io_object_t io_ident_t; 129 typedef io_object_t uext_object_t; 130 131 extern void iokit_add_reference( io_object_t obj, natural_t type ); 132 extern void iokit_remove_reference( io_object_t obj ); 133 extern void iokit_remove_connect_reference( io_object_t obj ); 134 extern void iokit_port_object_description(io_object_t obj, kobject_description_t desc); 135 136 extern io_object_t iokit_lookup_object_port( ipc_port_t port ); 137 extern io_connect_t iokit_lookup_connect_port( ipc_port_t port ); 138 extern io_ident_t iokit_lookup_ident_port( ipc_port_t port ); 139 extern uext_object_t iokit_lookup_uext_object_port( ipc_port_t port ); 140 141 extern ipc_port_t iokit_make_object_port( io_object_t obj ); 142 extern ipc_port_t iokit_make_connect_port( io_connect_t obj ); 143 extern ipc_port_t iokit_make_ident_port( io_ident_t obj ); 144 145 #else 146 147 #ifndef __IOKIT_PORTS_DEFINED__ 148 #define __IOKIT_PORTS_DEFINED__ 149 typedef mach_port_t io_object_t; 150 #endif /* __IOKIT_PORTS_DEFINED__ */ 151 152 #endif /* MACH_KERNEL */ 153 154 #endif /* IOKIT */ 155 156 #endif /* DEVICE_TYPES_H */ 157