X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/8f6c56a50524aa785f7e596d52dddfb331e18961..94ff46dc2849db4d43eaaf144872decc522aafb4:/iokit/IOKit/IOTypes.h diff --git a/iokit/IOKit/IOTypes.h b/iokit/IOKit/IOTypes.h index d503e6a47..d07f14f1b 100644 --- a/iokit/IOKit/IOTypes.h +++ b/iokit/IOKit/IOTypes.h @@ -1,8 +1,8 @@ /* - * Copyright (c) 1998-2004 Apple Computer, Inc. All rights reserved. + * Copyright (c) 1998-2012 Apple Computer, Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ - * + * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License * Version 2.0 (the 'License'). You may not use this file except in @@ -11,10 +11,10 @@ * unlawful or unlicensed copies of an Apple operating system, or to * circumvent, violate, or enable the circumvention or violation of, any * terms of an Apple operating system software license agreement. - * + * * Please obtain a copy of the License at * http://www.opensource.apple.com/apsl/ and read it before using this file. - * + * * The Original Code and all software distributed under the License are * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, @@ -22,19 +22,14 @@ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. * Please see the License for the specific language governing rights and * limitations under the License. - * - * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ - */ -/* - * Copyright (c) 1998 Apple Computer, Inc. All rights reserved. - * - * HISTORY * + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ */ - -#ifndef __IOKIT_IOTYPES_H +#ifndef __IOKIT_IOTYPES_H #define __IOKIT_IOTYPES_H +#ifndef PLATFORM_DriverKit + #ifndef IOKIT #define IOKIT 1 #endif /* !IOKIT */ @@ -52,73 +47,90 @@ extern "C" { #endif -#ifndef NULL -#define NULL 0 +#ifndef NULL +#if defined (__cplusplus) +#if __cplusplus >= 201103L +#define NULL nullptr +#else +#define NULL 0 +#endif +#else +#define NULL ((void *)0) +#endif #endif - + /* * Simple data types. */ -#ifndef __MACTYPES__ /* CF MacTypes.h */ -#ifndef __TYPES__ /* guess... Mac Types.h */ - +#include #include -#ifndef __cplusplus -#if !TYPE_BOOL -#ifdef KERNEL -typedef int bool; -enum { - false = 0, - true = 1 -}; -#endif -#endif +#if KERNEL +#include #endif -#endif /* __TYPES__ */ -#endif /* __MACTYPES__ */ +typedef UInt32 IOOptionBits; +typedef SInt32 IOFixed; +typedef UInt32 IOVersion; +typedef UInt32 IOItemCount; +typedef UInt32 IOCacheMode; + +typedef UInt32 IOByteCount32; +typedef UInt64 IOByteCount64; -typedef UInt32 IOOptionBits; -typedef SInt32 IOFixed; -typedef UInt32 IOVersion; -typedef UInt32 IOItemCount; -typedef UInt32 IOCacheMode; +typedef UInt32 IOPhysicalAddress32; +typedef UInt64 IOPhysicalAddress64; +typedef UInt32 IOPhysicalLength32; +typedef UInt64 IOPhysicalLength64; -typedef UInt32 IOByteCount; +#if !defined(__arm__) && !defined(__i386__) +typedef mach_vm_address_t IOVirtualAddress; +#else +typedef vm_address_t IOVirtualAddress; +#endif + +#if !defined(__arm__) && !defined(__i386__) && !(defined(__x86_64__) && !defined(KERNEL)) && !(defined(__arm64__) && !defined(__LP64__)) +typedef IOByteCount64 IOByteCount; +#else +typedef IOByteCount32 IOByteCount; +#endif - /* LP64todo - these will need to expand to mach_vm_address_t */ -typedef vm_address_t IOVirtualAddress; -typedef IOVirtualAddress IOLogicalAddress; +typedef IOVirtualAddress IOLogicalAddress; -#if 0 +#if !defined(__arm__) && !defined(__i386__) && !(defined(__x86_64__) && !defined(KERNEL)) -typedef UInt64 IOPhysicalAddress; -typedef UInt64 IOPhysicalLength; -#define IOPhysical32( hi, lo ) ((UInt64) lo + ((UInt64)(hi) << 32)) -#define IOPhysSize 64 +typedef IOPhysicalAddress64 IOPhysicalAddress; +typedef IOPhysicalLength64 IOPhysicalLength; +#define IOPhysical32( hi, lo ) ((UInt64) lo + ((UInt64)(hi) << 32)) +#define IOPhysSize 64 #else -typedef UInt32 IOPhysicalAddress; -typedef UInt32 IOPhysicalLength; -#define IOPhysical32( hi, lo ) (lo) -#define IOPhysSize 32 +typedef IOPhysicalAddress32 IOPhysicalAddress; +typedef IOPhysicalLength32 IOPhysicalLength; +#define IOPhysical32( hi, lo ) (lo) +#define IOPhysSize 32 #endif -#if __cplusplus -struct IOVirtualRange -{ - IOVirtualAddress address; - IOByteCount length; -}; -#else -typedef struct -{ - IOVirtualAddress address; - IOByteCount length; + +typedef struct{ + IOPhysicalAddress address; + IOByteCount length; +} IOPhysicalRange; + +typedef struct{ + IOVirtualAddress address; + IOByteCount length; } IOVirtualRange; + +#if !defined(__arm__) && !defined(__i386__) +typedef IOVirtualRange IOAddressRange; +#else +typedef struct{ + mach_vm_address_t address; + mach_vm_size_t length; +} IOAddressRange; #endif /* @@ -133,9 +145,9 @@ typedef struct { /* * Memory alignment -- specified as a power of two. */ -typedef unsigned int IOAlignment; +typedef unsigned int IOAlignment; -#define IO_NULL_VM_TASK ((vm_task_t)0) +#define IO_NULL_VM_TASK ((vm_task_t)0) /* @@ -149,89 +161,104 @@ typedef unsigned int IOAlignment; #ifndef __IOKIT_PORTS_DEFINED__ #define __IOKIT_PORTS_DEFINED__ #ifdef KERNEL +#ifdef __cplusplus +class OSObject; +typedef OSObject * io_object_t; +#else typedef struct OSObject * io_object_t; +#endif #else /* KERNEL */ -typedef mach_port_t io_object_t; +typedef mach_port_t io_object_t; #endif /* KERNEL */ #endif /* __IOKIT_PORTS_DEFINED__ */ #include -typedef io_object_t io_connect_t; -typedef io_object_t io_enumerator_t; -typedef io_object_t io_iterator_t; -typedef io_object_t io_registry_entry_t; -typedef io_object_t io_service_t; +typedef io_object_t io_connect_t; +typedef io_object_t io_enumerator_t; +typedef io_object_t io_iterator_t; +typedef io_object_t io_registry_entry_t; +typedef io_object_t io_service_t; +typedef io_object_t uext_object_t; -#define IO_OBJECT_NULL ((io_object_t) 0) +#define IO_OBJECT_NULL ((io_object_t) 0) #endif /* MACH_KERNEL */ // IOConnectMapMemory memoryTypes enum { - kIODefaultMemoryType = 0 + kIODefaultMemoryType = 0 }; enum { - kIODefaultCache = 0, - kIOInhibitCache = 1, - kIOWriteThruCache = 2, - kIOCopybackCache = 3, - kIOWriteCombineCache = 4 + kIODefaultCache = 0, + kIOInhibitCache = 1, + kIOWriteThruCache = 2, + kIOCopybackCache = 3, + kIOWriteCombineCache = 4, + kIOCopybackInnerCache = 5, + kIOPostedWrite = 6, + kIORealTimeCache = 7, + kIOPostedReordered = 8, + kIOPostedCombinedReordered = 9, }; // IOMemory mapping options enum { - kIOMapAnywhere = 0x00000001, - - kIOMapCacheMask = 0x00000700, - kIOMapCacheShift = 8, - kIOMapDefaultCache = kIODefaultCache << kIOMapCacheShift, - kIOMapInhibitCache = kIOInhibitCache << kIOMapCacheShift, - kIOMapWriteThruCache = kIOWriteThruCache << kIOMapCacheShift, - kIOMapCopybackCache = kIOCopybackCache << kIOMapCacheShift, - kIOMapWriteCombineCache = kIOWriteCombineCache << kIOMapCacheShift, - - kIOMapUserOptionsMask = 0x00000fff, - - kIOMapReadOnly = 0x00001000, - - kIOMapStatic = 0x01000000, - kIOMapReference = 0x02000000, - kIOMapUnique = 0x04000000 + kIOMapAnywhere = 0x00000001, + + kIOMapCacheMask = 0x00000f00, + kIOMapCacheShift = 8, + kIOMapDefaultCache = kIODefaultCache << kIOMapCacheShift, + kIOMapInhibitCache = kIOInhibitCache << kIOMapCacheShift, + kIOMapWriteThruCache = kIOWriteThruCache << kIOMapCacheShift, + kIOMapCopybackCache = kIOCopybackCache << kIOMapCacheShift, + kIOMapWriteCombineCache = kIOWriteCombineCache << kIOMapCacheShift, + kIOMapCopybackInnerCache = kIOCopybackInnerCache << kIOMapCacheShift, + kIOMapPostedWrite = kIOPostedWrite << kIOMapCacheShift, + kIOMapRealTimeCache = kIORealTimeCache << kIOMapCacheShift, + kIOMapPostedReordered = kIOPostedReordered << kIOMapCacheShift, + kIOMapPostedCombinedReordered = kIOPostedCombinedReordered << kIOMapCacheShift, + + kIOMapUserOptionsMask = 0x00000fff, + + kIOMapReadOnly = 0x00001000, + + kIOMapStatic = 0x01000000, + kIOMapReference = 0x02000000, + kIOMapUnique = 0x04000000, +#ifdef XNU_KERNEL_PRIVATE + kIOMap64Bit = 0x08000000, +#endif + kIOMapPrefault = 0x10000000, + kIOMapOverwrite = 0x20000000 }; /*! @enum Scale Factors - @discussion Used when a scale_factor parameter is required to define a unit of time. - @constant kNanosecondScale Scale factor for nanosecond based times. - @constant kMicrosecondScale Scale factor for microsecond based times. - @constant kMillisecondScale Scale factor for millisecond based times. - @constant kTickScale Scale factor for the standard (100Hz) tick. - @constant kSecondScale Scale factor for second based times. */ + * @discussion Used when a scale_factor parameter is required to define a unit of time. + * @constant kNanosecondScale Scale factor for nanosecond based times. + * @constant kMicrosecondScale Scale factor for microsecond based times. + * @constant kMillisecondScale Scale factor for millisecond based times. + * @constant kTickScale Scale factor for the standard (100Hz) tick. + * @constant kSecondScale Scale factor for second based times. */ enum { - kNanosecondScale = 1, - kMicrosecondScale = 1000, - kMillisecondScale = 1000 * 1000, - kSecondScale = 1000 * 1000 * 1000, - kTickScale = (kSecondScale / 100) + kNanosecondScale = 1, + kMicrosecondScale = 1000, + kMillisecondScale = 1000 * 1000, + kSecondScale = 1000 * 1000 * 1000, + kTickScale = (kSecondScale / 100) +}; + +enum { + kIOConnectMethodVarOutputSize = -3 }; /* compatibility types */ #ifndef KERNEL -/* - * Machine-independent caching specification. - */ -typedef enum { - IO_CacheOff, // cache inhibit - IO_WriteThrough, - IO_CopyBack -} IOCache; -//typedef char OSString[64]; typedef unsigned int IODeviceNumber; -typedef unsigned int IOObjectNumber; #endif @@ -239,4 +266,30 @@ typedef unsigned int IOObjectNumber; } #endif +#else /* !PLATFORM_DriverKit */ + +#include + +typedef uint32_t IOOptionBits; +typedef int32_t IOFixed; +typedef uint32_t IOVersion; +typedef uint32_t IOItemCount; +typedef uint32_t IOCacheMode; + +typedef uint32_t IOByteCount32; +typedef uint64_t IOByteCount64; +typedef IOByteCount64 IOByteCount; + +typedef uint32_t IOPhysicalAddress32; +typedef uint64_t IOPhysicalAddress64; +typedef uint32_t IOPhysicalLength32; +typedef uint64_t IOPhysicalLength64; + +typedef IOPhysicalAddress64 IOPhysicalAddress; +typedef IOPhysicalLength64 IOPhysicalLength; + +typedef uint64_t IOVirtualAddress; + +#endif /* PLATFORM_DriverKit */ + #endif /* ! __IOKIT_IOTYPES_H */