X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/d7e50217d7adf6e52786a38bcaa4cd698cb9a79e..d1ecb069dfe24481e4a83f44cb5217a2b06746d7:/iokit/IOKit/IOTypes.h diff --git a/iokit/IOKit/IOTypes.h b/iokit/IOKit/IOTypes.h index c7f5e05e8..9f5d5a3f7 100644 --- a/iokit/IOKit/IOTypes.h +++ b/iokit/IOKit/IOTypes.h @@ -1,16 +1,19 @@ /* - * Copyright (c) 1998-2000 Apple Computer, Inc. All rights reserved. + * Copyright (c) 1998-2006 Apple Computer, Inc. All rights reserved. * - * @APPLE_LICENSE_HEADER_START@ - * - * Copyright (c) 1999-2003 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 - * compliance with the License. Please obtain a copy of the License at - * http://www.opensource.apple.com/apsl/ and read it before using this - * file. + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * 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 @@ -20,15 +23,8 @@ * Please see the License for the specific language governing rights and * limitations under the License. * - * @APPLE_LICENSE_HEADER_END@ - */ -/* - * Copyright (c) 1998 Apple Computer, Inc. All rights reserved. - * - * HISTORY - * + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ */ - #ifndef __IOKIT_IOTYPES_H #define __IOKIT_IOTYPES_H @@ -50,7 +46,11 @@ extern "C" { #endif #ifndef NULL +#if defined (__cplusplus) #define NULL 0 +#else +#define NULL ((void *)0) +#endif #endif /* @@ -59,63 +59,82 @@ extern "C" { #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 -#endif - #endif /* __TYPES__ */ #endif /* __MACTYPES__ */ +#if KERNEL +#include +#endif + typedef UInt32 IOOptionBits; typedef SInt32 IOFixed; typedef UInt32 IOVersion; typedef UInt32 IOItemCount; typedef UInt32 IOCacheMode; -typedef UInt32 IOByteCount; +typedef UInt32 IOByteCount32; +typedef UInt64 IOByteCount64; + +typedef UInt32 IOPhysicalAddress32; +typedef UInt64 IOPhysicalAddress64; +typedef UInt32 IOPhysicalLength32; +typedef UInt64 IOPhysicalLength64; -typedef vm_address_t IOVirtualAddress; -typedef IOVirtualAddress IOLogicalAddress; +#ifdef __LP64__ +typedef mach_vm_address_t IOVirtualAddress; +#else +typedef vm_address_t IOVirtualAddress; +#endif + +#if defined(__LP64__) && defined(KERNEL) +typedef IOByteCount64 IOByteCount; +#else +typedef IOByteCount32 IOByteCount; +#endif -#if 0 +typedef IOVirtualAddress IOLogicalAddress; -typedef UInt64 IOPhysicalAddress; -typedef UInt64 IOPhysicalLength; +#if defined(__LP64__) && defined(KERNEL) + +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; +typedef IOPhysicalAddress32 IOPhysicalAddress; +typedef IOPhysicalLength32 IOPhysicalLength; #define IOPhysical32( hi, lo ) (lo) #define IOPhysSize 32 #endif -#if __cplusplus -struct IOVirtualRange + +typedef struct { - IOVirtualAddress address; + IOPhysicalAddress address; IOByteCount length; -}; -#else +} IOPhysicalRange; + typedef struct { IOVirtualAddress address; IOByteCount length; } IOVirtualRange; -#endif + +#ifdef __LP64__ +typedef IOVirtualRange IOAddressRange; +#else /* !__LP64__ */ +typedef struct +{ + mach_vm_address_t address; + mach_vm_size_t length; +} IOAddressRange; +#endif /* !__LP64__ */ /* * Map between #defined or enum'd constants and text description. @@ -154,11 +173,12 @@ typedef mach_port_t io_object_t; #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_enumerator_t; +#define IO_OBJECT_NULL ((io_object_t) 0) #endif /* MACH_KERNEL */ @@ -192,7 +212,11 @@ enum { kIOMapReadOnly = 0x00001000, kIOMapStatic = 0x01000000, - kIOMapReference = 0x02000000 + kIOMapReference = 0x02000000, + kIOMapUnique = 0x04000000 +#ifdef XNU_KERNEL_PRIVATE + , kIOMap64Bit = 0x08000000 +#endif }; /*! @enum Scale Factors @@ -200,30 +224,22 @@ enum { @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 + kSecondScale = 1000 * 1000 * 1000, + kTickScale = (kSecondScale / 100) }; /* 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