The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/iokit/IOKit/IOTypes.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * Copyright (c) 1998-2006 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 #ifndef __IOKIT_IOTYPES_H
   29 #define __IOKIT_IOTYPES_H
   30 
   31 #ifndef IOKIT
   32 #define IOKIT 1
   33 #endif /* !IOKIT */
   34 
   35 #if KERNEL
   36 #include <IOKit/system.h>
   37 #else
   38 #include <mach/message.h>
   39 #include <mach/vm_types.h>
   40 #endif
   41 
   42 #include <IOKit/IOReturn.h>
   43 
   44 #ifdef __cplusplus
   45 extern "C" {
   46 #endif
   47 
   48 #ifndef NULL
   49 #if defined (__cplusplus)
   50 #define NULL    0
   51 #else
   52 #define NULL ((void *)0)
   53 #endif
   54 #endif
   55         
   56 /*
   57  * Simple data types.
   58  */
   59 #ifndef __MACTYPES__    /* CF MacTypes.h */
   60 #ifndef __TYPES__       /* guess... Mac Types.h */
   61 
   62 #include <stdbool.h>
   63 #include <libkern/OSTypes.h>
   64 
   65 #endif /* __TYPES__ */
   66 #endif /* __MACTYPES__ */
   67 
   68 #if KERNEL
   69 #include <libkern/OSBase.h>
   70 #endif
   71 
   72 typedef UInt32          IOOptionBits;
   73 typedef SInt32          IOFixed;
   74 typedef UInt32          IOVersion;
   75 typedef UInt32          IOItemCount;
   76 typedef UInt32          IOCacheMode;
   77 
   78 typedef UInt32          IOByteCount32;
   79 typedef UInt64          IOByteCount64;
   80 
   81 typedef UInt32  IOPhysicalAddress32;
   82 typedef UInt64  IOPhysicalAddress64;
   83 typedef UInt32  IOPhysicalLength32;
   84 typedef UInt64  IOPhysicalLength64;
   85 
   86 #ifdef __LP64__
   87 typedef mach_vm_address_t       IOVirtualAddress;
   88 #else
   89 typedef vm_address_t            IOVirtualAddress;
   90 #endif
   91 
   92 #if defined(__LP64__) && defined(KERNEL)
   93 typedef IOByteCount64           IOByteCount;
   94 #else
   95 typedef IOByteCount32           IOByteCount;
   96 #endif
   97 
   98 typedef IOVirtualAddress    IOLogicalAddress;
   99 
  100 #if defined(__LP64__) && defined(KERNEL)
  101 
  102 typedef IOPhysicalAddress64      IOPhysicalAddress;
  103 typedef IOPhysicalLength64       IOPhysicalLength;
  104 #define IOPhysical32( hi, lo )          ((UInt64) lo + ((UInt64)(hi) << 32))
  105 #define IOPhysSize      64
  106 
  107 #else
  108 
  109 typedef IOPhysicalAddress32      IOPhysicalAddress;
  110 typedef IOPhysicalLength32       IOPhysicalLength;
  111 #define IOPhysical32( hi, lo )          (lo)
  112 #define IOPhysSize      32
  113 
  114 #endif
  115 
  116 
  117 typedef struct
  118 {
  119     IOPhysicalAddress   address;
  120     IOByteCount         length;
  121 } IOPhysicalRange;
  122 
  123 typedef struct 
  124 {
  125     IOVirtualAddress    address;
  126     IOByteCount         length;
  127 } IOVirtualRange;
  128 
  129 #ifdef __LP64__
  130 typedef IOVirtualRange  IOAddressRange;
  131 #else /* !__LP64__ */
  132 typedef struct 
  133 {
  134     mach_vm_address_t   address;
  135     mach_vm_size_t      length;
  136 } IOAddressRange;
  137 #endif /* !__LP64__ */
  138 
  139 /*
  140  * Map between #defined or enum'd constants and text description.
  141  */
  142 typedef struct {
  143         int value;
  144         const char *name;
  145 } IONamedValue;
  146 
  147 
  148 /*
  149  * Memory alignment -- specified as a power of two.
  150  */
  151 typedef unsigned int    IOAlignment;
  152 
  153 #define IO_NULL_VM_TASK         ((vm_task_t)0)
  154 
  155 
  156 /*
  157  * Pull in machine specific stuff.
  158  */
  159 
  160 //#include <IOKit/machine/IOTypes.h>
  161 
  162 #ifndef MACH_KERNEL
  163 
  164 #ifndef __IOKIT_PORTS_DEFINED__
  165 #define __IOKIT_PORTS_DEFINED__
  166 #ifdef KERNEL
  167 #ifdef __cplusplus
  168 class OSObject;
  169 typedef OSObject * io_object_t;
  170 #else
  171 typedef struct OSObject * io_object_t;
  172 #endif
  173 #else /* KERNEL */
  174 typedef mach_port_t     io_object_t;
  175 #endif /* KERNEL */
  176 #endif /* __IOKIT_PORTS_DEFINED__ */
  177 
  178 #include <device/device_types.h>
  179 
  180 typedef io_object_t     io_connect_t;
  181 typedef io_object_t     io_enumerator_t;
  182 typedef io_object_t     io_iterator_t;
  183 typedef io_object_t     io_registry_entry_t;
  184 typedef io_object_t     io_service_t;
  185 
  186 #define IO_OBJECT_NULL  ((io_object_t) 0)
  187 
  188 #endif /* MACH_KERNEL */
  189 
  190 // IOConnectMapMemory memoryTypes
  191 enum {
  192     kIODefaultMemoryType        = 0
  193 };
  194 
  195 enum {
  196     kIODefaultCache             = 0,
  197     kIOInhibitCache             = 1,
  198     kIOWriteThruCache           = 2,
  199     kIOCopybackCache            = 3,
  200     kIOWriteCombineCache        = 4,
  201     kIOCopybackInnerCache       = 5
  202 };
  203 
  204 // IOMemory mapping options
  205 enum {
  206     kIOMapAnywhere              = 0x00000001,
  207 
  208     kIOMapCacheMask             = 0x00000700,
  209     kIOMapCacheShift            = 8,
  210     kIOMapDefaultCache          = kIODefaultCache       << kIOMapCacheShift,
  211     kIOMapInhibitCache          = kIOInhibitCache       << kIOMapCacheShift,
  212     kIOMapWriteThruCache        = kIOWriteThruCache     << kIOMapCacheShift,
  213     kIOMapCopybackCache         = kIOCopybackCache      << kIOMapCacheShift,
  214     kIOMapWriteCombineCache     = kIOWriteCombineCache  << kIOMapCacheShift,
  215     kIOMapCopybackInnerCache    = kIOCopybackInnerCache << kIOMapCacheShift,
  216 
  217     kIOMapUserOptionsMask       = 0x00000fff,
  218 
  219     kIOMapReadOnly              = 0x00001000,
  220 
  221     kIOMapStatic                = 0x01000000,
  222     kIOMapReference             = 0x02000000,
  223     kIOMapUnique                = 0x04000000
  224 #ifdef XNU_KERNEL_PRIVATE
  225     , kIOMap64Bit               = 0x08000000
  226 #endif
  227 };
  228 
  229 /*! @enum Scale Factors
  230     @discussion Used when a scale_factor parameter is required to define a unit of time.
  231     @constant kNanosecondScale Scale factor for nanosecond based times.
  232     @constant kMicrosecondScale Scale factor for microsecond based times.
  233     @constant kMillisecondScale Scale factor for millisecond based times.
  234     @constant kTickScale Scale factor for the standard (100Hz) tick.
  235     @constant kSecondScale Scale factor for second based times. */
  236 
  237 enum {
  238     kNanosecondScale  = 1,
  239     kMicrosecondScale = 1000,
  240     kMillisecondScale = 1000 * 1000,
  241     kSecondScale      = 1000 * 1000 * 1000,
  242     kTickScale        = (kSecondScale / 100)
  243 };
  244 
  245 enum {
  246     kIOConnectMethodVarOutputSize = -3
  247 };
  248 
  249 /* compatibility types */
  250 
  251 #ifndef KERNEL
  252 
  253 typedef unsigned int IODeviceNumber;
  254 
  255 #endif
  256 
  257 #ifdef __cplusplus
  258 }
  259 #endif
  260 
  261 #endif /* ! __IOKIT_IOTYPES_H */

Cache object: 1a3eec90569e866bbe6d138b1359ed21


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.