1*4f1223e8SApple OSS Distributions /* 2*4f1223e8SApple OSS Distributions * Copyright (c) 1998-2012 Apple Computer, Inc. All rights reserved. 3*4f1223e8SApple OSS Distributions * 4*4f1223e8SApple OSS Distributions * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 5*4f1223e8SApple OSS Distributions * 6*4f1223e8SApple OSS Distributions * This file contains Original Code and/or Modifications of Original Code 7*4f1223e8SApple OSS Distributions * as defined in and that are subject to the Apple Public Source License 8*4f1223e8SApple OSS Distributions * Version 2.0 (the 'License'). You may not use this file except in 9*4f1223e8SApple OSS Distributions * compliance with the License. The rights granted to you under the License 10*4f1223e8SApple OSS Distributions * may not be used to create, or enable the creation or redistribution of, 11*4f1223e8SApple OSS Distributions * unlawful or unlicensed copies of an Apple operating system, or to 12*4f1223e8SApple OSS Distributions * circumvent, violate, or enable the circumvention or violation of, any 13*4f1223e8SApple OSS Distributions * terms of an Apple operating system software license agreement. 14*4f1223e8SApple OSS Distributions * 15*4f1223e8SApple OSS Distributions * Please obtain a copy of the License at 16*4f1223e8SApple OSS Distributions * http://www.opensource.apple.com/apsl/ and read it before using this file. 17*4f1223e8SApple OSS Distributions * 18*4f1223e8SApple OSS Distributions * The Original Code and all software distributed under the License are 19*4f1223e8SApple OSS Distributions * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 20*4f1223e8SApple OSS Distributions * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 21*4f1223e8SApple OSS Distributions * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 22*4f1223e8SApple OSS Distributions * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 23*4f1223e8SApple OSS Distributions * Please see the License for the specific language governing rights and 24*4f1223e8SApple OSS Distributions * limitations under the License. 25*4f1223e8SApple OSS Distributions * 26*4f1223e8SApple OSS Distributions * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 27*4f1223e8SApple OSS Distributions */ 28*4f1223e8SApple OSS Distributions #ifndef __IOKIT_IOTYPES_H 29*4f1223e8SApple OSS Distributions #define __IOKIT_IOTYPES_H 30*4f1223e8SApple OSS Distributions 31*4f1223e8SApple OSS Distributions #ifndef XNU_PLATFORM_DriverKit 32*4f1223e8SApple OSS Distributions 33*4f1223e8SApple OSS Distributions #ifndef IOKIT 34*4f1223e8SApple OSS Distributions #define IOKIT 1 35*4f1223e8SApple OSS Distributions #endif /* !IOKIT */ 36*4f1223e8SApple OSS Distributions 37*4f1223e8SApple OSS Distributions #include <sys/cdefs.h> 38*4f1223e8SApple OSS Distributions 39*4f1223e8SApple OSS Distributions #if KERNEL 40*4f1223e8SApple OSS Distributions #include <IOKit/system.h> 41*4f1223e8SApple OSS Distributions #else 42*4f1223e8SApple OSS Distributions #include <mach/message.h> 43*4f1223e8SApple OSS Distributions #include <mach/vm_types.h> 44*4f1223e8SApple OSS Distributions #endif 45*4f1223e8SApple OSS Distributions 46*4f1223e8SApple OSS Distributions #include <IOKit/IOReturn.h> 47*4f1223e8SApple OSS Distributions 48*4f1223e8SApple OSS Distributions #ifdef __cplusplus 49*4f1223e8SApple OSS Distributions extern "C" { 50*4f1223e8SApple OSS Distributions #endif 51*4f1223e8SApple OSS Distributions 52*4f1223e8SApple OSS Distributions #ifndef NULL 53*4f1223e8SApple OSS Distributions #ifdef XNU_KERNEL_PRIVATE 54*4f1223e8SApple OSS Distributions #if defined (__cplusplus) 55*4f1223e8SApple OSS Distributions #define NULL nullptr 56*4f1223e8SApple OSS Distributions #else 57*4f1223e8SApple OSS Distributions #define NULL ((void *)0) 58*4f1223e8SApple OSS Distributions #endif 59*4f1223e8SApple OSS Distributions #else // XNU_KERNEL_PRIVATE 60*4f1223e8SApple OSS Distributions 61*4f1223e8SApple OSS Distributions #ifdef KERNEL 62*4f1223e8SApple OSS Distributions #ifdef XNU_KERNEL_PRIVATE 63*4f1223e8SApple OSS Distributions /* 64*4f1223e8SApple OSS Distributions * Xcode doesn't currently set up search paths correctly for Kernel extensions, 65*4f1223e8SApple OSS Distributions * so the clang headers are not seen in the correct order to use their types. 66*4f1223e8SApple OSS Distributions */ 67*4f1223e8SApple OSS Distributions #endif 68*4f1223e8SApple OSS Distributions #define USE_CLANG_TYPES 0 69*4f1223e8SApple OSS Distributions #else 70*4f1223e8SApple OSS Distributions #if defined(__has_feature) && __has_feature(modules) 71*4f1223e8SApple OSS Distributions #define USE_CLANG_TYPES 1 72*4f1223e8SApple OSS Distributions #else 73*4f1223e8SApple OSS Distributions #define USE_CLANG_TYPES 0 74*4f1223e8SApple OSS Distributions #endif 75*4f1223e8SApple OSS Distributions #endif 76*4f1223e8SApple OSS Distributions 77*4f1223e8SApple OSS Distributions #if USE_CLANG_TYPES 78*4f1223e8SApple OSS Distributions #define __need_NULL 79*4f1223e8SApple OSS Distributions #include <stddef.h> 80*4f1223e8SApple OSS Distributions #undef __need_NULL 81*4f1223e8SApple OSS Distributions #elif defined (__cplusplus) 82*4f1223e8SApple OSS Distributions #if __cplusplus >= 201103L && (defined(__arm__) || defined(__arm64__)) 83*4f1223e8SApple OSS Distributions #define NULL nullptr 84*4f1223e8SApple OSS Distributions #else 85*4f1223e8SApple OSS Distributions #define NULL 0 86*4f1223e8SApple OSS Distributions #endif 87*4f1223e8SApple OSS Distributions #else 88*4f1223e8SApple OSS Distributions #define NULL ((void *)0) 89*4f1223e8SApple OSS Distributions #endif 90*4f1223e8SApple OSS Distributions 91*4f1223e8SApple OSS Distributions #undef USE_CLANG_TYPES 92*4f1223e8SApple OSS Distributions 93*4f1223e8SApple OSS Distributions #endif // XNU_KERNEL_PRIVATE 94*4f1223e8SApple OSS Distributions #endif 95*4f1223e8SApple OSS Distributions 96*4f1223e8SApple OSS Distributions /* 97*4f1223e8SApple OSS Distributions * Simple data types. 98*4f1223e8SApple OSS Distributions */ 99*4f1223e8SApple OSS Distributions #include <stdbool.h> 100*4f1223e8SApple OSS Distributions #include <libkern/OSTypes.h> 101*4f1223e8SApple OSS Distributions 102*4f1223e8SApple OSS Distributions #if KERNEL 103*4f1223e8SApple OSS Distributions #include <libkern/OSBase.h> 104*4f1223e8SApple OSS Distributions #endif 105*4f1223e8SApple OSS Distributions 106*4f1223e8SApple OSS Distributions typedef UInt32 IOOptionBits; 107*4f1223e8SApple OSS Distributions typedef SInt32 IOFixed; 108*4f1223e8SApple OSS Distributions typedef UInt32 IOVersion; 109*4f1223e8SApple OSS Distributions typedef UInt32 IOItemCount; 110*4f1223e8SApple OSS Distributions typedef UInt32 IOCacheMode; 111*4f1223e8SApple OSS Distributions 112*4f1223e8SApple OSS Distributions typedef UInt32 IOByteCount32; 113*4f1223e8SApple OSS Distributions typedef UInt64 IOByteCount64; 114*4f1223e8SApple OSS Distributions 115*4f1223e8SApple OSS Distributions typedef UInt32 IOPhysicalAddress32; 116*4f1223e8SApple OSS Distributions typedef UInt64 IOPhysicalAddress64; 117*4f1223e8SApple OSS Distributions typedef UInt32 IOPhysicalLength32; 118*4f1223e8SApple OSS Distributions typedef UInt64 IOPhysicalLength64; 119*4f1223e8SApple OSS Distributions 120*4f1223e8SApple OSS Distributions #if !defined(__arm__) && !defined(__i386__) 121*4f1223e8SApple OSS Distributions typedef mach_vm_address_t IOVirtualAddress __kernel_ptr_semantics; 122*4f1223e8SApple OSS Distributions #else 123*4f1223e8SApple OSS Distributions typedef vm_address_t IOVirtualAddress __kernel_ptr_semantics; 124*4f1223e8SApple OSS Distributions #endif 125*4f1223e8SApple OSS Distributions 126*4f1223e8SApple OSS Distributions #if !defined(__arm__) && !defined(__i386__) && !(defined(__x86_64__) && !defined(KERNEL)) && !(defined(__arm64__) && !defined(__LP64__)) 127*4f1223e8SApple OSS Distributions typedef IOByteCount64 IOByteCount; 128*4f1223e8SApple OSS Distributions #define PRIIOByteCount PRIu64 129*4f1223e8SApple OSS Distributions #else 130*4f1223e8SApple OSS Distributions typedef IOByteCount32 IOByteCount; 131*4f1223e8SApple OSS Distributions #define PRIIOByteCount PRIu32 132*4f1223e8SApple OSS Distributions #endif 133*4f1223e8SApple OSS Distributions 134*4f1223e8SApple OSS Distributions typedef IOVirtualAddress IOLogicalAddress; 135*4f1223e8SApple OSS Distributions 136*4f1223e8SApple OSS Distributions #if !defined(__arm__) && !defined(__i386__) && !(defined(__x86_64__) && !defined(KERNEL)) 137*4f1223e8SApple OSS Distributions 138*4f1223e8SApple OSS Distributions typedef IOPhysicalAddress64 IOPhysicalAddress; 139*4f1223e8SApple OSS Distributions typedef IOPhysicalLength64 IOPhysicalLength; 140*4f1223e8SApple OSS Distributions #define IOPhysical32( hi, lo ) ((UInt64) lo + ((UInt64)(hi) << 32)) 141*4f1223e8SApple OSS Distributions #define IOPhysSize 64 142*4f1223e8SApple OSS Distributions 143*4f1223e8SApple OSS Distributions #else 144*4f1223e8SApple OSS Distributions 145*4f1223e8SApple OSS Distributions typedef IOPhysicalAddress32 IOPhysicalAddress; 146*4f1223e8SApple OSS Distributions typedef IOPhysicalLength32 IOPhysicalLength; 147*4f1223e8SApple OSS Distributions #define IOPhysical32( hi, lo ) (lo) 148*4f1223e8SApple OSS Distributions #define IOPhysSize 32 149*4f1223e8SApple OSS Distributions 150*4f1223e8SApple OSS Distributions #endif 151*4f1223e8SApple OSS Distributions 152*4f1223e8SApple OSS Distributions 153*4f1223e8SApple OSS Distributions typedef struct{ 154*4f1223e8SApple OSS Distributions IOPhysicalAddress address; 155*4f1223e8SApple OSS Distributions IOByteCount length; 156*4f1223e8SApple OSS Distributions } IOPhysicalRange; 157*4f1223e8SApple OSS Distributions 158*4f1223e8SApple OSS Distributions typedef struct{ 159*4f1223e8SApple OSS Distributions IOVirtualAddress address; 160*4f1223e8SApple OSS Distributions IOByteCount length; 161*4f1223e8SApple OSS Distributions } IOVirtualRange; 162*4f1223e8SApple OSS Distributions 163*4f1223e8SApple OSS Distributions #if !defined(__arm__) && !defined(__i386__) 164*4f1223e8SApple OSS Distributions typedef IOVirtualRange IOAddressRange; 165*4f1223e8SApple OSS Distributions #else 166*4f1223e8SApple OSS Distributions typedef struct{ 167*4f1223e8SApple OSS Distributions mach_vm_address_t address; 168*4f1223e8SApple OSS Distributions mach_vm_size_t length; 169*4f1223e8SApple OSS Distributions } IOAddressRange; 170*4f1223e8SApple OSS Distributions #endif 171*4f1223e8SApple OSS Distributions 172*4f1223e8SApple OSS Distributions /* 173*4f1223e8SApple OSS Distributions * Map between #defined or enum'd constants and text description. 174*4f1223e8SApple OSS Distributions */ 175*4f1223e8SApple OSS Distributions typedef struct { 176*4f1223e8SApple OSS Distributions int value; 177*4f1223e8SApple OSS Distributions const char *name; 178*4f1223e8SApple OSS Distributions } IONamedValue; 179*4f1223e8SApple OSS Distributions 180*4f1223e8SApple OSS Distributions 181*4f1223e8SApple OSS Distributions /* 182*4f1223e8SApple OSS Distributions * Memory alignment -- specified as a power of two. 183*4f1223e8SApple OSS Distributions */ 184*4f1223e8SApple OSS Distributions typedef unsigned int IOAlignment; 185*4f1223e8SApple OSS Distributions 186*4f1223e8SApple OSS Distributions #define IO_NULL_VM_TASK ((vm_task_t)0) 187*4f1223e8SApple OSS Distributions 188*4f1223e8SApple OSS Distributions 189*4f1223e8SApple OSS Distributions /* 190*4f1223e8SApple OSS Distributions * Pull in machine specific stuff. 191*4f1223e8SApple OSS Distributions */ 192*4f1223e8SApple OSS Distributions 193*4f1223e8SApple OSS Distributions //#include <IOKit/machine/IOTypes.h> 194*4f1223e8SApple OSS Distributions 195*4f1223e8SApple OSS Distributions #ifndef MACH_KERNEL 196*4f1223e8SApple OSS Distributions 197*4f1223e8SApple OSS Distributions #ifndef __IOKIT_PORTS_DEFINED__ 198*4f1223e8SApple OSS Distributions #define __IOKIT_PORTS_DEFINED__ 199*4f1223e8SApple OSS Distributions #ifdef KERNEL 200*4f1223e8SApple OSS Distributions #ifdef __cplusplus 201*4f1223e8SApple OSS Distributions class OSObject; 202*4f1223e8SApple OSS Distributions typedef OSObject * io_object_t; 203*4f1223e8SApple OSS Distributions #else 204*4f1223e8SApple OSS Distributions typedef struct OSObject * io_object_t; 205*4f1223e8SApple OSS Distributions #endif 206*4f1223e8SApple OSS Distributions #else /* KERNEL */ 207*4f1223e8SApple OSS Distributions typedef mach_port_t io_object_t; 208*4f1223e8SApple OSS Distributions #endif /* KERNEL */ 209*4f1223e8SApple OSS Distributions #endif /* __IOKIT_PORTS_DEFINED__ */ 210*4f1223e8SApple OSS Distributions 211*4f1223e8SApple OSS Distributions #include <device/device_types.h> 212*4f1223e8SApple OSS Distributions 213*4f1223e8SApple OSS Distributions typedef io_object_t io_connect_t; 214*4f1223e8SApple OSS Distributions typedef io_object_t io_enumerator_t; 215*4f1223e8SApple OSS Distributions typedef io_object_t io_ident_t; 216*4f1223e8SApple OSS Distributions typedef io_object_t io_iterator_t; 217*4f1223e8SApple OSS Distributions typedef io_object_t io_registry_entry_t; 218*4f1223e8SApple OSS Distributions typedef io_object_t io_service_t; 219*4f1223e8SApple OSS Distributions typedef io_object_t uext_object_t; 220*4f1223e8SApple OSS Distributions 221*4f1223e8SApple OSS Distributions #define IO_OBJECT_NULL ((io_object_t) 0) 222*4f1223e8SApple OSS Distributions 223*4f1223e8SApple OSS Distributions #endif /* MACH_KERNEL */ 224*4f1223e8SApple OSS Distributions 225*4f1223e8SApple OSS Distributions #include <IOKit/IOMapTypes.h> 226*4f1223e8SApple OSS Distributions 227*4f1223e8SApple OSS Distributions /*! @enum Scale Factors 228*4f1223e8SApple OSS Distributions * @discussion Used when a scale_factor parameter is required to define a unit of time. 229*4f1223e8SApple OSS Distributions * @constant kNanosecondScale Scale factor for nanosecond based times. 230*4f1223e8SApple OSS Distributions * @constant kMicrosecondScale Scale factor for microsecond based times. 231*4f1223e8SApple OSS Distributions * @constant kMillisecondScale Scale factor for millisecond based times. 232*4f1223e8SApple OSS Distributions * @constant kTickScale Scale factor for the standard (100Hz) tick. 233*4f1223e8SApple OSS Distributions * @constant kSecondScale Scale factor for second based times. */ 234*4f1223e8SApple OSS Distributions 235*4f1223e8SApple OSS Distributions enum { 236*4f1223e8SApple OSS Distributions kNanosecondScale = 1, 237*4f1223e8SApple OSS Distributions kMicrosecondScale = 1000, 238*4f1223e8SApple OSS Distributions kMillisecondScale = 1000 * 1000, 239*4f1223e8SApple OSS Distributions kSecondScale = 1000 * 1000 * 1000, 240*4f1223e8SApple OSS Distributions kTickScale = (kSecondScale / 100) 241*4f1223e8SApple OSS Distributions }; 242*4f1223e8SApple OSS Distributions 243*4f1223e8SApple OSS Distributions enum { 244*4f1223e8SApple OSS Distributions kIOConnectMethodVarOutputSize = -3 245*4f1223e8SApple OSS Distributions }; 246*4f1223e8SApple OSS Distributions 247*4f1223e8SApple OSS Distributions /* compatibility types */ 248*4f1223e8SApple OSS Distributions 249*4f1223e8SApple OSS Distributions #ifndef KERNEL 250*4f1223e8SApple OSS Distributions 251*4f1223e8SApple OSS Distributions typedef unsigned int IODeviceNumber; 252*4f1223e8SApple OSS Distributions 253*4f1223e8SApple OSS Distributions #endif 254*4f1223e8SApple OSS Distributions 255*4f1223e8SApple OSS Distributions #ifdef __cplusplus 256*4f1223e8SApple OSS Distributions } 257*4f1223e8SApple OSS Distributions #endif 258*4f1223e8SApple OSS Distributions 259*4f1223e8SApple OSS Distributions #else /* !XNU_PLATFORM_DriverKit */ 260*4f1223e8SApple OSS Distributions 261*4f1223e8SApple OSS Distributions #include <stdint.h> 262*4f1223e8SApple OSS Distributions 263*4f1223e8SApple OSS Distributions typedef uint32_t IOOptionBits; 264*4f1223e8SApple OSS Distributions typedef int32_t IOFixed; 265*4f1223e8SApple OSS Distributions typedef uint32_t IOVersion; 266*4f1223e8SApple OSS Distributions typedef uint32_t IOItemCount; 267*4f1223e8SApple OSS Distributions typedef uint32_t IOCacheMode; 268*4f1223e8SApple OSS Distributions 269*4f1223e8SApple OSS Distributions typedef uint32_t IOByteCount32; 270*4f1223e8SApple OSS Distributions typedef uint64_t IOByteCount64; 271*4f1223e8SApple OSS Distributions typedef IOByteCount64 IOByteCount; 272*4f1223e8SApple OSS Distributions 273*4f1223e8SApple OSS Distributions typedef uint32_t IOPhysicalAddress32; 274*4f1223e8SApple OSS Distributions typedef uint64_t IOPhysicalAddress64; 275*4f1223e8SApple OSS Distributions typedef uint32_t IOPhysicalLength32; 276*4f1223e8SApple OSS Distributions typedef uint64_t IOPhysicalLength64; 277*4f1223e8SApple OSS Distributions 278*4f1223e8SApple OSS Distributions typedef IOPhysicalAddress64 IOPhysicalAddress; 279*4f1223e8SApple OSS Distributions typedef IOPhysicalLength64 IOPhysicalLength; 280*4f1223e8SApple OSS Distributions 281*4f1223e8SApple OSS Distributions typedef uint64_t IOVirtualAddress; 282*4f1223e8SApple OSS Distributions 283*4f1223e8SApple OSS Distributions #endif /* XNU_PLATFORM_DriverKit */ 284*4f1223e8SApple OSS Distributions 285*4f1223e8SApple OSS Distributions enum { 286*4f1223e8SApple OSS Distributions kIOMaxBusStall40usec = 40000, 287*4f1223e8SApple OSS Distributions kIOMaxBusStall30usec = 30000, 288*4f1223e8SApple OSS Distributions kIOMaxBusStall25usec = 25000, 289*4f1223e8SApple OSS Distributions kIOMaxBusStall20usec = 20000, 290*4f1223e8SApple OSS Distributions kIOMaxBusStall10usec = 10000, 291*4f1223e8SApple OSS Distributions kIOMaxBusStall5usec = 5000, 292*4f1223e8SApple OSS Distributions kIOMaxBusStallNone = 0, 293*4f1223e8SApple OSS Distributions }; 294*4f1223e8SApple OSS Distributions 295*4f1223e8SApple OSS Distributions #if PRIVATE 296*4f1223e8SApple OSS Distributions #define LIBKERN_OSNUMBER_FLOAT_SUPPORT 1 297*4f1223e8SApple OSS Distributions #endif /* PRIVATE */ 298*4f1223e8SApple OSS Distributions 299*4f1223e8SApple OSS Distributions #endif /* ! __IOKIT_IOTYPES_H */ 300