Root/
Source at commit 2744 created 8 years 11 months ago. By ifabio, Removing old RLE/Clut data | |
---|---|
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 |