Root/
Source at commit 1166 created 13 years 10 days ago. By meklort, Fixed recent Makefile changes. Please do not use /Users/evan/SourceCode/tmp/chameleon/trunk or VPATH. the *only* time you should use /Users/evan/SourceCode/tmp/chameleon/trunk is when setting the SRCROOT variable. Also note that very soon make pkg is going to be removed. The pkg build script in trunk is very out of date. Instead please use the package maker at http://forge.voodooprojects.org/p/chameleonApplications/. Once this is ready for trunk it will be merged. | |
---|---|
1 | /*␊ |
2 | * IOFWDCL.h␊ |
3 | * IOFireWireFamily␊ |
4 | *␊ |
5 | * Created by Niels on Fri Feb 21 2003.␊ |
6 | * Copyright (c) 2003 Apple Computer, Inc. All rights reserved.␊ |
7 | *␊ |
8 | *␉$Log: IOFWDCL.h,v $␊ |
9 | *␉Revision 1.20 2008/11/14 00:17:11 arulchan␊ |
10 | *␉fix for rdar://5939334␊ |
11 | *␉␊ |
12 | *␉Revision 1.19 2007/03/14 01:01:12 collin␊ |
13 | *␉*** empty log message ***␊ |
14 | *␉␊ |
15 | *␉Revision 1.18 2007/01/26 23:42:19 ayanowit␊ |
16 | *␉another fix for nuDCL rosetta mode␊ |
17 | *␉␊ |
18 | *␉Revision 1.17 2006/08/16 01:41:41 collin␊ |
19 | *␉*** empty log message ***␊ |
20 | *␉␊ |
21 | *␉Revision 1.16 2006/03/09 22:26:46 niels␊ |
22 | *␉fix 4466075␊ |
23 | *␉␊ |
24 | *␉Revision 1.15 2006/03/09 22:20:14 niels␊ |
25 | *␉fix 4466075␊ |
26 | *␉␊ |
27 | *␉Revision 1.14 2006/03/09 21:40:44 niels␊ |
28 | *␉fix 4466075␊ |
29 | *␉␊ |
30 | *␉Revision 1.13 2006/02/09 00:21:50 niels␊ |
31 | *␉merge chardonnay branch to tot␊ |
32 | *␉␊ |
33 | *␉Revision 1.12.4.1 2005/08/06 01:31:31 collin␊ |
34 | *␉*** empty log message ***␊ |
35 | *␉␊ |
36 | *␉Revision 1.12 2005/02/18 03:19:03 niels␊ |
37 | *␉fix isight␊ |
38 | *␉␊ |
39 | *␉Revision 1.11 2004/04/19 21:51:49 niels␊ |
40 | *␉*** empty log message ***␊ |
41 | *␉␊ |
42 | *␉Revision 1.10 2004/03/25 00:00:23 niels␊ |
43 | *␉fix panic allocating large physical address spaces␊ |
44 | *␉␊ |
45 | *␉Revision 1.9 2003/10/31 02:40:58 niels␊ |
46 | *␉*** empty log message ***␊ |
47 | *␉␊ |
48 | *␉Revision 1.8 2003/08/26 05:11:21 niels␊ |
49 | *␉*** empty log message ***␊ |
50 | *␉␊ |
51 | *␉Revision 1.7 2003/08/25 08:39:15 niels␊ |
52 | *␉*** empty log message ***␊ |
53 | *␉␊ |
54 | *␉Revision 1.6 2003/08/18 23:18:14 niels␊ |
55 | *␉*** empty log message ***␊ |
56 | *␉␊ |
57 | *␉Revision 1.5 2003/08/08 22:30:32 niels␊ |
58 | *␉*** empty log message ***␊ |
59 | *␉␊ |
60 | *␉Revision 1.4 2003/07/30 05:22:14 niels␊ |
61 | *␉*** empty log message ***␊ |
62 | *␉␊ |
63 | *␉Revision 1.3 2003/07/29 22:49:22 niels␊ |
64 | *␉*** empty log message ***␊ |
65 | *␉␊ |
66 | *␉Revision 1.2 2003/07/21 06:52:58 niels␊ |
67 | *␉merge isoch to TOT␊ |
68 | *␉␊ |
69 | *␉Revision 1.1.2.5 2003/07/18 00:17:41 niels␊ |
70 | *␉*** empty log message ***␊ |
71 | *␉␊ |
72 | *␉Revision 1.1.2.4 2003/07/14 22:08:53 niels␊ |
73 | *␉*** empty log message ***␊ |
74 | *␉␊ |
75 | *␉Revision 1.1.2.3 2003/07/11 18:15:33 niels␊ |
76 | *␉*** empty log message ***␊ |
77 | *␉␊ |
78 | *␉Revision 1.1.2.2 2003/07/03 22:10:24 niels␊ |
79 | *␉fix iidc/dv rcv␊ |
80 | *␉␊ |
81 | *␉Revision 1.1.2.1 2003/07/01 20:54:06 niels␊ |
82 | *␉isoch merge␊ |
83 | *␉␊ |
84 | */␊ |
85 | ␊ |
86 | #import <IOKit/firewire/IOFireWireFamilyCommon.h>␊ |
87 | ␊ |
88 | #import <libkern/c++/OSObject.h>␊ |
89 | #import <libkern/c++/OSSet.h>␊ |
90 | #import <IOKit/IOTypes.h>␊ |
91 | ␊ |
92 | class IODCLProgram ;␊ |
93 | class OSIterator ;␊ |
94 | class IOFireWireLink ;␊ |
95 | class IOMemoryMap ;␊ |
96 | ␊ |
97 | /*! @class IOFWDCL␊ |
98 | */␊ |
99 | ␊ |
100 | class IOFWDCL : public OSObject␊ |
101 | {␊ |
102 | ␉OSDeclareAbstractStructors( IOFWDCL ) ;␊ |
103 | ␉␊ |
104 | ␉public:␊ |
105 | ␉␊ |
106 | ␉␉typedef void (*Callback)( void * refcon ) ;␊ |
107 | ␊ |
108 | ␉␉enum␊ |
109 | ␉␉{␊ |
110 | ␉␉␉kDynamic␉␉␉␉␉= BIT(1)//kNuDCLDynamic,␊ |
111 | ␉␉␉,kUpdateBeforeCallback␉␉= BIT(2)//kNuDCLUpdateBeforeCallback␊ |
112 | ␉␉␉,kUser␉␉␉␉␉␉= BIT(18) // kNuDCLUser␊ |
113 | ␉␉␉,kBigEndianUpdates␉␉␉= BIT(19) // NOTE: Don't change this without making similar change to IOFireWireLib's NuDCL::Export(...)!␊ |
114 | ␉␉} ;␊ |
115 | ␊ |
116 | ␉␉class InternalData ␊ |
117 | ␉␉{␊ |
118 | ␉␉␉public:␊ |
119 | ␉␉␉␊ |
120 | ␉␉␉␉IOFWDCL *␉␉␉lastBranch ;␊ |
121 | ␉␉} ;␊ |
122 | ␊ |
123 | ␉protected:␊ |
124 | ␉␉␊ |
125 | ␉␉IOFWDCL*␉␉␉fBranch ;␊ |
126 | ␉␉Callback␉␉␉fCallback ;␊ |
127 | ␉␉volatile UInt32 *␉fTimeStampPtr ;␊ |
128 | ␉␉UInt32␉␉␉␉fRangeCount ;␊ |
129 | ␉␉IOVirtualRange *␉fRanges ;␊ |
130 | ␉␉OSSet*␉␉␉␉fUpdateList ;␊ |
131 | ␉␉OSIterator *␉␉fUpdateIterator ;␊ |
132 | ␉␉volatile UInt32 *␉fUserStatusPtr ;␊ |
133 | ␉␉void*␉␉␉␉fRefcon ;␊ |
134 | ␉␉UInt32␉␉␉␉fFlags ;␊ |
135 | ␉␉␊ |
136 | ␉␉InternalData *␉␉fLoLevel ;␊ |
137 | ␊ |
138 | ␉public:␊ |
139 | ␊ |
140 | ␉␉//␊ |
141 | ␉␉// IOFWDCL public API:␊ |
142 | ␉␉//␊ |
143 | ␉␉␊ |
144 | ␉␉virtual bool␉␉initWithRanges ( ␊ |
145 | ␉␉␉␉␉␉␉␉␉␉␉OSSet * ␉␉␉␉updateSet, ␊ |
146 | ␉␉␉␉␉␉␉␉␉␉␉unsigned ␉␉␉␉rangesCount = 0, ␊ |
147 | ␉␉␉␉␉␉␉␉␉␉␉IOVirtualRange ␉␉␉ranges [] = NULL ) ;␊ |
148 | ␊ |
149 | ␉␉void␉␉␉␉setBranch( IOFWDCL* branch ) ;␊ |
150 | ␉␉IOFWDCL*␉␉␉getBranch()␉const ;␊ |
151 | ␉␉void␉␉␉␉setTimeStampPtr ( UInt32* timeStampPtr ) ;␊ |
152 | ␉␉UInt32*␉␉␉␉getTimeStampPtr () const ;␊ |
153 | ␉␉void␉␉␉␉setCallback( Callback callback ) ;␊ |
154 | ␉␉Callback␉␉␉getCallback() const ;␊ |
155 | ␉␉void␉␉␉␉setStatusPtr( UInt32* statusPtr ) ;␊ |
156 | ␉␉UInt32*␉␉␉␉getStatusPtr() const ;␊ |
157 | ␉␉void␉␉␉␉setRefcon( void * refcon ) ;␊ |
158 | ␉␉void *␉␉␉␉getRefcon() const ;␊ |
159 | ␉␉const OSSet*␉␉getUpdateList() const ;␊ |
160 | ␉␉␊ |
161 | ␉␉virtual IOReturn␉addRange ( IOVirtualRange& range ) ;␊ |
162 | ␉␉virtual IOReturn␉setRanges ( UInt32 numRanges, IOVirtualRange ranges[] ) ;␊ |
163 | ␉␉virtual UInt32␉␉getRanges( UInt32 maxRanges, IOVirtualRange ranges[] ) const ;␊ |
164 | ␉␉virtual UInt32␉␉countRanges() ;␊ |
165 | ␉␉virtual IOReturn␉getSpan( IOVirtualRange& result ) const ;␊ |
166 | ␉␉virtual IOByteCount␉getSize() const ;␊ |
167 | ␉␉IOReturn␉␉␉appendUpdateList( IOFWDCL* updateDCL ) ;␊ |
168 | ␉␉IOReturn␉␉␉setUpdateList( OSSet* updateList ) ;␊ |
169 | ␉␉void␉␉␉␉emptyUpdateList() ; ␊ |
170 | ␉␉void␉␉␉␉setFlags( UInt32 flags ) ;␊ |
171 | ␉␉UInt32␉␉␉␉getFlags() const ;␊ |
172 | ␉␉␊ |
173 | ␊ |
174 | ␉␉virtual void␉␉update() = 0 ;␊ |
175 | ␊ |
176 | ␉␉// OSObject␊ |
177 | ␉␉␊ |
178 | ␉␉virtual void␉␉free () ;␊ |
179 | ␉␉␊ |
180 | ␉public:␊ |
181 | ␉␉␊ |
182 | ␉␉//␊ |
183 | ␉␉// internal use only; please don't use... ␊ |
184 | ␉␉//␊ |
185 | ␉␉␊ |
186 | ␉␉virtual IOReturn␉␉␉␉compile( IODCLProgram & , bool & ) = 0 ;␊ |
187 | ␉␉virtual void␉␉␉␉␉link () = 0 ;␊ |
188 | ␊ |
189 | ␉␉OSMetaClassDeclareReservedUnused ( IOFWDCL, 4 ) ;␉␉// used to be relink()␊ |
190 | ␊ |
191 | ␉public :␊ |
192 | ␉␉virtual bool␉␉␉␉␉interrupt( bool &, IOFWDCL * & ) = 0 ;␊ |
193 | ␉␉virtual void␉␉␉␉␉finalize ( IODCLProgram & ) ;␊ |
194 | ␉␉virtual IOReturn␉␉␉␉importUserDCL (␊ |
195 | ␉␉␉␉␉␉␉␉␉␉␉␉␉␉UInt8 *␉␉␉␉data,␊ |
196 | ␉␉␉␉␉␉␉␉␉␉␉␉␉␉IOByteCount &␉␉dataSize,␊ |
197 | ␉␉␉␉␉␉␉␉␉␉␉␉␉␉IOMemoryMap *␉␉bufferMap,␊ |
198 | ␉␉␉␉␉␉␉␉␉␉␉␉␉␉const OSArray *␉␉dcl ) ;␊ |
199 | ␉␉␉␊ |
200 | ␉protected :␊ |
201 | ␉␊ |
202 | ␉␉friend class IOFWDCLFriend ;␊ |
203 | ␉␉␊ |
204 | ␉public :␊ |
205 | ␉␊ |
206 | ␉␉// dump DCL info...␊ |
207 | ␉␉virtual void␉␉␉␉␉debug() ;␊ |
208 | ␊ |
209 | ␉public:␊ |
210 | ␉␉␊ |
211 | ␉␉//␊ |
212 | ␉␉// internal use only; please don't use... ␊ |
213 | ␉␉//␊ |
214 | ␉␉␊ |
215 | ␉␉virtual bool␉␉␉␉␉checkForInterrupt() = 0 ;␊ |
216 | ␊ |
217 | OSMetaClassDeclareReservedUsed ( IOFWDCL, 0 ) ;␊ |
218 | OSMetaClassDeclareReservedUnused ( IOFWDCL, 1 ) ;␊ |
219 | OSMetaClassDeclareReservedUnused ( IOFWDCL, 2 ) ;␊ |
220 | OSMetaClassDeclareReservedUnused ( IOFWDCL, 3 ) ;␊ |
221 | //␉OSMetaClassDeclareReservedUnused ( ***, 4 ) ;␉␉␉// used above␊ |
222 | ␊ |
223 | } ;␊ |
224 | ␊ |
225 | #pragma mark -␊ |
226 | ␊ |
227 | /*! @class IOFWReceiveDCL␊ |
228 | */␊ |
229 | ␊ |
230 | class IOFWReceiveDCL : public IOFWDCL␊ |
231 | {␊ |
232 | ␉OSDeclareAbstractStructors( IOFWReceiveDCL )␊ |
233 | ␊ |
234 | ␉protected :␊ |
235 | ␉␊ |
236 | ␉␉UInt8␉␉fHeaderBytes ;␊ |
237 | ␉␉bool␉␉fWait ;␊ |
238 | ␉␊ |
239 | ␉public:␊ |
240 | ␊ |
241 | ␉␉// me␊ |
242 | ␉␉virtual bool␉␉initWithParams( ␊ |
243 | ␉␉␉␉␉␉␉␉␉␉␉OSSet *␉␉␉␉updateSet, ␊ |
244 | ␉␉␉␉␉␉␉␉␉␉␉UInt8␉␉␉␉headerBytes, ␊ |
245 | ␉␉␉␉␉␉␉␉␉␉␉unsigned␉␉␉rangesCount, ␊ |
246 | ␉␉␉␉␉␉␉␉␉␉␉IOVirtualRange␉␉ranges [] ) ;␉␊ |
247 | ␉␉IOReturn␉␉␉setWaitControl( bool wait ) ;␊ |
248 | ␊ |
249 | ␉public :␊ |
250 | ␊ |
251 | ␉␉// internal use only:␊ |
252 | ␉␉virtual IOReturn␉␉␉␉importUserDCL (␊ |
253 | ␉␉␉␉␉␉␉␉␉␉␉␉␉␉UInt8 *␉␉␉␉data,␊ |
254 | ␉␉␉␉␉␉␉␉␉␉␉␉␉␉IOByteCount &␉␉dataSize,␊ |
255 | ␉␉␉␉␉␉␉␉␉␉␉␉␉␉IOMemoryMap *␉␉bufferMap,␊ |
256 | ␉␉␉␉␉␉␉␉␉␉␉␉␉␉const OSArray *␉␉dcl ) ;␊ |
257 | ␉␊ |
258 | ␉protected :␊ |
259 | ␉␊ |
260 | ␉␉virtual void␉␉debug() ;␊ |
261 | ␊ |
262 | } ;␊ |
263 | ␊ |
264 | #pragma mark -␊ |
265 | ␊ |
266 | /*! @class IOFWSendDCL␊ |
267 | */␊ |
268 | ␊ |
269 | class IOFWSendDCL : public IOFWDCL␊ |
270 | {␊ |
271 | ␉OSDeclareAbstractStructors( IOFWSendDCL )␊ |
272 | ␊ |
273 | ␉protected:␊ |
274 | ␉␊ |
275 | ␉␉UInt32 * ␉fUserHeaderPtr ;␉␉␉// pointer to 2 quadlets containing isoch header for this packet␊ |
276 | ␉␉UInt32 *␉fUserHeaderMaskPtr ;␉␉// pointer to 2 quadlets; used to mask header quadlets␊ |
277 | ␉␉IOFWDCL *␉fSkipBranchDCL ;␊ |
278 | ␉␉Callback␉fSkipCallback ;␊ |
279 | ␉␉void *␉␉fSkipRefcon ;␊ |
280 | ␉␉UInt8␉␉fSync ;␊ |
281 | ␉␉UInt8␉␉fTag ;␊ |
282 | ␊ |
283 | ␉public:␊ |
284 | ␊ |
285 | ␉␉// OSObject␊ |
286 | ␉␉virtual void␉␉free() ;␊ |
287 | ␉␉␊ |
288 | ␉␉// IOFWDCL␊ |
289 | ␉␉virtual IOReturn␉addRange ( IOVirtualRange& range ) ;␊ |
290 | ␉␉virtual IOReturn␉setRanges ( UInt32 numRanges, IOVirtualRange ranges[] ) ;␊ |
291 | ␊ |
292 | ␉␉// me␊ |
293 | ␉␉virtual bool␉␉initWithParams( OSSet * ␉␉␉␉updateSet, ␊ |
294 | ␉␉␉␉␉␉␉␉␉␉␉unsigned ␉␉␉␉rangesCount = 0, ␊ |
295 | ␉␉␉␉␉␉␉␉␉␉␉IOVirtualRange ␉␉␉ranges [] = NULL,␊ |
296 | ␉␉␉␉␉␉␉␉␉␉␉UInt8␉␉␉␉␉sync = 0,␊ |
297 | ␉␉␉␉␉␉␉␉␉␉␉UInt8␉␉␉␉␉tag = 0 ) ;␊ |
298 | ␉␉␊ |
299 | ␉␉void␉␉␉␉setUserHeaderPtr( UInt32* userHeaderPtr, UInt32 * maskPtr ) ;␊ |
300 | ␉␉UInt32 *␉␉␉getUserHeaderPtr() ;␊ |
301 | ␉␉UInt32 *␉␉␉getUserHeaderMask() ;␊ |
302 | ␉␉void␉␉␉␉setSkipBranch( IOFWDCL * skipBranchDCL ) ;␊ |
303 | ␉␉IOFWDCL *␉␉␉getSkipBranch() const ;␊ |
304 | ␉␉void␉␉␉␉setSkipCallback( Callback callback ) ;␊ |
305 | ␉␉Callback␉␉␉getSkipCallback() const ;␊ |
306 | ␉␉void␉␉␉␉setSkipRefcon( void * refcon = 0 ) ;␊ |
307 | ␉␉void *␉␉␉␉getSkipRefcon() const ;␉␉␉␉␉␉␉␉␉␉␊ |
308 | ␉␉void␉␉␉␉setSync( UInt8 sync ) ;␊ |
309 | ␉␉UInt8␉␉␉␉getSync() const ;␉␉␉␉␉␉␉␉␉␉␉␉␊ |
310 | ␉␉void␉␉␉␉setTag( UInt8 tag ) ;␉␉␉␉␉␉␉␉␉␉␉␊ |
311 | ␉␉UInt8␉␉␉␉getTag() const ;␊ |
312 | ␊ |
313 | ␉public :␊ |
314 | ␉␊ |
315 | ␉␉// internal use only:␊ |
316 | ␉␉virtual IOReturn␉␉␉␉importUserDCL (␊ |
317 | ␉␉␉␉␉␉␉␉␉␉␉␉␉␉UInt8 *␉␉␉␉data,␊ |
318 | ␉␉␉␉␉␉␉␉␉␉␉␉␉␉IOByteCount &␉␉dataSize,␊ |
319 | ␉␉␉␉␉␉␉␉␉␉␉␉␉␉IOMemoryMap *␉␉bufferMap,␊ |
320 | ␉␉␉␉␉␉␉␉␉␉␉␉␉␉const OSArray *␉␉dcl ) ;␊ |
321 | ␉protected :␊ |
322 | ␉␊ |
323 | ␉␉virtual void␉␉debug() ;␊ |
324 | } ;␊ |
325 | ␊ |
326 | #pragma mark -␊ |
327 | ␊ |
328 | /*! @class IOFWSkipCycleDCL␊ |
329 | */␊ |
330 | ␊ |
331 | class IOFWSkipCycleDCL : public IOFWDCL␊ |
332 | {␊ |
333 | ␉OSDeclareAbstractStructors( IOFWSkipCycleDCL )␊ |
334 | ␊ |
335 | ␉public:␊ |
336 | ␉␊ |
337 | ␉␉virtual bool␉␉init() ;␊ |
338 | ␉␉␊ |
339 | ␉␉virtual IOReturn␉addRange ( IOVirtualRange& range ) ;␊ |
340 | ␉␉virtual IOReturn␉setRanges ( UInt32 numRanges, IOVirtualRange ranges[] ) ;␊ |
341 | ␉␉virtual IOReturn␉getSpan( IOVirtualRange& result ) ;␊ |
342 | ␊ |
343 | ␉protected :␊ |
344 | ␉␊ |
345 | ␉␉virtual void␉␉debug() ;␊ |
346 | } ;␊ |
347 |