Chameleon

Chameleon Svn Source Tree

Root/branches/slice/trunkM/i386/include/IOKit/IOTypes.h

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
45extern "C" {
46#endif
47
48#ifndefNULL
49#if defined (__cplusplus)
50#defineNULL0
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
72typedef UInt32IOOptionBits;
73typedef SInt32IOFixed;
74typedef UInt32IOVersion;
75typedef UInt32IOItemCount;
76typedef UInt32 IOCacheMode;
77
78typedef UInt32 IOByteCount32;
79typedef UInt64 IOByteCount64;
80
81typedef UInt32IOPhysicalAddress32;
82typedef UInt64IOPhysicalAddress64;
83typedef UInt32IOPhysicalLength32;
84typedef UInt64IOPhysicalLength64;
85
86#ifdef __LP64__
87typedef mach_vm_address_tIOVirtualAddress;
88#else
89typedef vm_address_tIOVirtualAddress;
90#endif
91
92#if defined(__LP64__) && defined(KERNEL)
93typedef IOByteCount64IOByteCount;
94#else
95typedef IOByteCount32 IOByteCount;
96#endif
97
98typedef IOVirtualAddress IOLogicalAddress;
99
100#if defined(__LP64__) && defined(KERNEL)
101
102typedef IOPhysicalAddress64 IOPhysicalAddress;
103typedef IOPhysicalLength64 IOPhysicalLength;
104#define IOPhysical32( hi, lo )((UInt64) lo + ((UInt64)(hi) << 32))
105#define IOPhysSize64
106
107#else
108
109typedef IOPhysicalAddress32 IOPhysicalAddress;
110typedef IOPhysicalLength32 IOPhysicalLength;
111#define IOPhysical32( hi, lo )(lo)
112#define IOPhysSize32
113
114#endif
115
116
117typedef struct
118{
119 IOPhysicalAddressaddress;
120 IOByteCountlength;
121} IOPhysicalRange;
122
123typedef struct
124{
125 IOVirtualAddressaddress;
126 IOByteCountlength;
127} IOVirtualRange;
128
129#ifdef __LP64__
130typedef IOVirtualRangeIOAddressRange;
131#else /* !__LP64__ */
132typedef struct
133{
134 mach_vm_address_taddress;
135 mach_vm_size_tlength;
136} IOAddressRange;
137#endif /* !__LP64__ */
138
139/*
140 * Map between #defined or enum'd constants and text description.
141 */
142typedef struct {
143int value;
144const char *name;
145} IONamedValue;
146
147
148/*
149 * Memory alignment -- specified as a power of two.
150 */
151typedef unsigned intIOAlignment;
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__
166typedef struct OSObject * io_object_t;
167#endif /* __IOKIT_PORTS_DEFINED__ */
168
169#include <device/device_types.h>
170
171typedef io_object_tio_connect_t;
172typedef io_object_tio_enumerator_t;
173typedef io_object_tio_iterator_t;
174typedef io_object_tio_registry_entry_t;
175typedef io_object_tio_service_t;
176
177#defineIO_OBJECT_NULL((io_object_t) 0)
178
179#endif /* MACH_KERNEL */
180
181// IOConnectMapMemory memoryTypes
182enum {
183 kIODefaultMemoryType= 0
184};
185
186enum {
187 kIODefaultCache= 0,
188 kIOInhibitCache= 1,
189 kIOWriteThruCache= 2,
190 kIOCopybackCache= 3,
191 kIOWriteCombineCache= 4
192};
193
194// IOMemory mapping options
195enum {
196 kIOMapAnywhere= 0x00000001,
197
198 kIOMapCacheMask= 0x00000700,
199 kIOMapCacheShift= 8,
200 kIOMapDefaultCache= kIODefaultCache << kIOMapCacheShift,
201 kIOMapInhibitCache= kIOInhibitCache << kIOMapCacheShift,
202 kIOMapWriteThruCache= kIOWriteThruCache << kIOMapCacheShift,
203 kIOMapCopybackCache= kIOCopybackCache << kIOMapCacheShift,
204 kIOMapWriteCombineCache= kIOWriteCombineCache << kIOMapCacheShift,
205
206 kIOMapUserOptionsMask= 0x00000fff,
207
208 kIOMapReadOnly= 0x00001000,
209
210 kIOMapStatic= 0x01000000,
211 kIOMapReference= 0x02000000,
212 kIOMapUnique= 0x04000000
213};
214
215/*! @enum Scale Factors
216 @discussion Used when a scale_factor parameter is required to define a unit of time.
217 @constant kNanosecondScale Scale factor for nanosecond based times.
218 @constant kMicrosecondScale Scale factor for microsecond based times.
219 @constant kMillisecondScale Scale factor for millisecond based times.
220 @constant kTickScale Scale factor for the standard (100Hz) tick.
221 @constant kSecondScale Scale factor for second based times. */
222
223enum {
224 kNanosecondScale = 1,
225 kMicrosecondScale = 1000,
226 kMillisecondScale = 1000 * 1000,
227 kSecondScale = 1000 * 1000 * 1000,
228 kTickScale = (kSecondScale / 100)
229};
230
231/* compatibility types */
232
233
234#ifdef __cplusplus
235}
236#endif
237
238#endif /* ! __IOKIT_IOTYPES_H */
239

Archive Download this file

Revision: 1171