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