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 | * Copyright (c) 1998-2002 Apple Computer, Inc. All rights reserved.␊ |
3 | *␊ |
4 | * @APPLE_LICENSE_HEADER_START@␊ |
5 | * ␊ |
6 | * The contents of this file constitute Original Code as defined in and␊ |
7 | * are subject to the Apple Public Source License Version 1.1 (the␊ |
8 | * "License"). You may not use this file except in compliance with the␊ |
9 | * License. Please obtain a copy of the License at␊ |
10 | * http://www.apple.com/publicsource and read it before using this file.␊ |
11 | * ␊ |
12 | * This Original Code and all software distributed under the License are␊ |
13 | * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER␊ |
14 | * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,␊ |
15 | * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,␊ |
16 | * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the␊ |
17 | * License for the specific language governing rights and limitations␊ |
18 | * under the License.␊ |
19 | * ␊ |
20 | * @APPLE_LICENSE_HEADER_END@␊ |
21 | */␊ |
22 | ␊ |
23 | #ifndef _IOKIT_IOFWPSEUDOADDRESSSPACE_H␊ |
24 | #define _IOKIT_IOFWPSEUDOADDRESSSPACE_H␊ |
25 | ␊ |
26 | #include <IOKit/firewire/IOFWAddressSpace.h>␊ |
27 | ␊ |
28 | /*␊ |
29 | * If installed, this callback is invoked for drivers which ␊ |
30 | * would like to coalesce incoming writes and do batch processing ␊ |
31 | * of incoming block write packets.␊ |
32 | * This callback can be installed by calling setARxReqIntCompleteHandler␊ |
33 | * method in IOFWPseudoAddressSpace object. ␊ |
34 | */␊ |
35 | typedef void (*IOFWARxReqIntCompleteHandler)( void * refcon );␊ |
36 | ␊ |
37 | /*␊ |
38 | * Pseudo firewire addresses usually represent emulated registers of some kind.␊ |
39 | * Accesses to these addresses will result in the owner being notified.␊ |
40 | * ␊ |
41 | * Virtual addresses should not have zero as the top 16 bits of the 48 bit local address,␊ |
42 | * since that may look like a physical address to hardware (eg. OHCI).␊ |
43 | * if reader is NULL then reads will not be allowed.␊ |
44 | * if writer is NULL then writes will not be allowed.␊ |
45 | * if either is NULL then lock requests will not be allowed.␊ |
46 | * refcon is passed back as the first argument of read and write callbacks.␊ |
47 | */␊ |
48 | ␊ |
49 | class IOFWPseudoAddressSpace;␊ |
50 | ␊ |
51 | #pragma mark -␊ |
52 | ␊ |
53 | /*! ␊ |
54 | ␉@class IOFWPseudoAddressSpaceAux␊ |
55 | */␊ |
56 | ␊ |
57 | class IOFWPseudoAddressSpaceAux : public IOFWAddressSpaceAux␊ |
58 | {␊ |
59 | OSDeclareDefaultStructors(IOFWPseudoAddressSpaceAux)␊ |
60 | ␊ |
61 | ␉friend class IOFWAddressSpace;␊ |
62 | ␉friend class IOFWPseudoAddressSpace;␊ |
63 | ␉friend class IOFireWireController;␊ |
64 | ␉␉␊ |
65 | protected:␊ |
66 | ␉␊ |
67 | struct MemberVariables ␊ |
68 | ␉{ ␉␉␊ |
69 | ␉␉IOFWARxReqIntCompleteHandler␉␉fARxReqIntCompleteHandler;␊ |
70 | ␉␉void *␉ ␉␉␉␉␉␉␉fARxReqIntCompleteHandlerRefcon;␉␊ |
71 | ␉};␊ |
72 | ␉ ␊ |
73 | MemberVariables * fMembers;␊ |
74 | ␊ |
75 | public:␊ |
76 | ␊ |
77 | ␉virtual bool init( IOFWAddressSpace * primary );␊ |
78 | ␉virtual␉void free();␊ |
79 | ␊ |
80 | protected:␊ |
81 | ␊ |
82 | ␉bool createMemberVariables( void );␊ |
83 | ␉void destroyMemberVariables( void );␊ |
84 | ␉␊ |
85 | ␉virtual void handleARxReqIntComplete();␊ |
86 | ␉␉␊ |
87 | public:␊ |
88 | ␊ |
89 | /*!␉@function setARxReqIntCompleteHandler␊ |
90 | ␉@abstract Installs a callback to receive notification, when FWIM has completed␊ |
91 | ␉␉␉ ARxReqInt processing and no incoming packets are left in the queue.␊ |
92 | ␉@param refcon␉Client's callback object.␊ |
93 | ␉@param handler␉Client callback to be invoked, at the end of interrupt processing.␊ |
94 | ␉@result none.␉*/␉␊ |
95 | ␉virtual void setARxReqIntCompleteHandler( void * refcon, IOFWARxReqIntCompleteHandler handler );␊ |
96 | ␊ |
97 | ␉virtual bool intersects( IOFWAddressSpace * space );␊ |
98 | ␉␊ |
99 | private:␊ |
100 | ␊ |
101 | OSMetaClassDeclareReservedUsed(IOFWPseudoAddressSpaceAux, 0);␊ |
102 | OSMetaClassDeclareReservedUsed(IOFWPseudoAddressSpaceAux, 1);␊ |
103 | OSMetaClassDeclareReservedUnused(IOFWPseudoAddressSpaceAux, 2);␊ |
104 | OSMetaClassDeclareReservedUnused(IOFWPseudoAddressSpaceAux, 3);␊ |
105 | OSMetaClassDeclareReservedUnused(IOFWPseudoAddressSpaceAux, 4);␊ |
106 | OSMetaClassDeclareReservedUnused(IOFWPseudoAddressSpaceAux, 5);␊ |
107 | OSMetaClassDeclareReservedUnused(IOFWPseudoAddressSpaceAux, 6);␊ |
108 | OSMetaClassDeclareReservedUnused(IOFWPseudoAddressSpaceAux, 7);␊ |
109 | OSMetaClassDeclareReservedUnused(IOFWPseudoAddressSpaceAux, 8);␊ |
110 | OSMetaClassDeclareReservedUnused(IOFWPseudoAddressSpaceAux, 9);␊ |
111 | ␉␊ |
112 | };␊ |
113 | ␊ |
114 | /*! ␊ |
115 | ␉@class IOFWPseudoAddressSpace␊ |
116 | */␊ |
117 | ␊ |
118 | class IOFWPseudoAddressSpace : public IOFWAddressSpace␊ |
119 | {␊ |
120 | OSDeclareDefaultStructors(IOFWPseudoAddressSpace)␊ |
121 | ␊ |
122 | ␉friend class IOFWPseudoAddressSpaceAux;␊ |
123 | ␉friend class IOFireWireController;␊ |
124 | ␉␊ |
125 | protected:␊ |
126 | ␊ |
127 | IOMemoryDescriptor*␉fDesc;␊ |
128 | void *␉␉␉␉fRefCon;␊ |
129 | FWReadCallback␉␉fReader;␊ |
130 | FWWriteCallback␉␉fWriter;␊ |
131 | FWAddress␉␉␉fBase;␊ |
132 | UInt32␉␉␉␉fLen;␊ |
133 | ␊ |
134 | /*! @struct ExpansionData␊ |
135 | @discussion This structure will be used to expand the capablilties of the class in the future.␊ |
136 | */ ␊ |
137 | struct ExpansionData { };␊ |
138 | ␊ |
139 | /*! @var reserved␊ |
140 | Reserved for future use. (Internal use only) */␊ |
141 | ExpansionData *reserved;␊ |
142 | ␊ |
143 | static␉OSData *␉allocatedAddresses; // unused␊ |
144 | ␊ |
145 | virtual␉void ␉␉␉␉␉free();␊ |
146 | ␉␊ |
147 | public:␊ |
148 | ␊ |
149 | /*!␉@function␉simpleReader␊ |
150 | ␉@abstract␉A method for processing an address space read request␊ |
151 | ␉@param␉␉refcon␉␉Client's callback object.␊ |
152 | ␉@param␉␉nodeID␉␉FireWire Read from nodeID.␊ |
153 | ␉@param␉␉speed␉␉at this 'speed'.␊ |
154 | ␉@param␉␉addr␉␉with FireWire address 'addr'.␊ |
155 | ␉@param␉␉len␉␉␉read 'len' bytes from nodeID.␊ |
156 | ␉@param␉␉buf␉␉␉points to a memory descriptor containing the packet data.␊ |
157 | ␉@param␉␉offset␉␉start from this 'offset' in 'buf'.␊ |
158 | ␉@param␉␉reqrefcon␉Can be queried for extra info about the request.␊ |
159 | ␉@result␉␉UIn32␉␉returns kFWResponseComplete on success */␊ |
160 | static ␉UInt32 ␉␉␉␉␉simpleReader(␊ |
161 | ␉␉␉␉␉␉␉␉␉␉␉void*␉␉␉␉␉refcon,␊ |
162 | ␉␉␉␉␉␉␉␉␉␉␉UInt16 ␉␉␉␉␉nodeID,␊ |
163 | ␉␉␉␉␉␉␉␉␉␉␉IOFWSpeed &␉␉␉␉speed,␊ |
164 | ␉␉␉␉␉␉␉␉␉␉␉FWAddress ␉␉␉␉addr,␊ |
165 | ␉␉␉␉␉␉␉␉␉␉␉UInt32 ␉␉␉␉␉len,␊ |
166 | ␉␉␉␉␉␉␉␉␉␉␉IOMemoryDescriptor**␉buf,␊ |
167 | ␉␉␉␉␉␉␉␉␉␉␉IOByteCount* ␉␉␉offset,␊ |
168 | IOFWRequestRefCon␉␉reqrefcon);␊ |
169 | ␊ |
170 | /*!␉@function␉simpleWriter␊ |
171 | ␉@abstract␉A method for processing an address space write request␊ |
172 | ␉@param␉␉refcon␉␉Client's callback object.␊ |
173 | ␉@param␉␉nodeID␉␉FireWire Write to nodeID.␊ |
174 | ␉@param␉␉speed␉␉at this 'speed'.␊ |
175 | ␉@param␉␉addr␉␉with FireWire address 'addr'.␊ |
176 | ␉@param␉␉len␉␉␉write 'len' bytes to nodeID.␊ |
177 | ␉@param␉␉buf␉␉␉obtain bytes from location given by 'buf'.␊ |
178 | ␉@param␉␉reqrefcon␉Can be queried for extra info about the request.␊ |
179 | ␉@result␉␉UIn32␉␉returns kFWResponseComplete on success */␊ |
180 | static ␉UInt32 ␉␉␉␉␉simpleWriter(␊ |
181 | ␉␉␉␉␉␉␉␉␉␉␉void*␉␉␉␉␉refcon,␊ |
182 | ␉␉␉␉␉␉␉␉␉␉␉UInt16 ␉␉␉␉␉nodeID,␊ |
183 | ␉␉␉␉␉␉␉␉␉␉␉IOFWSpeed&␉␉␉␉speed,␊ |
184 | ␉␉␉␉␉␉␉␉␉␉␉FWAddress ␉␉␉␉addr,␊ |
185 | ␉␉␉␉␉␉␉␉␉␉␉UInt32 ␉␉␉␉␉len,␊ |
186 | ␉␉␉␉␉␉␉␉␉␉␉const void*␉␉␉␉buf,␊ |
187 | IOFWRequestRefCon␉␉reqrefcon);␊ |
188 | protected:␊ |
189 | ␊ |
190 | // Get a unique address range␊ |
191 | IOReturn␉␉␉␉␉␉allocateAddress(␊ |
192 | ␉␉␉␉␉␉␉␉␉␉␉FWAddress*␉␉␉␉addr,␊ |
193 | ␉␉␉␉␉␉␉␉␉␉␉UInt32 ␉␉␉␉␉len);␊ |
194 | // free address␊ |
195 | void␉␉␉␉␉␉␉freeAddress(␊ |
196 | ␉␉␉␉␉␉␉␉␉␉␉FWAddress ␉␉␉␉addr,␊ |
197 | ␉␉␉␉␉␉␉␉␉␉␉UInt32 ␉␉␉␉␉len);␊ |
198 | ␊ |
199 | public:␊ |
200 | ␊ |
201 | static IOFWPseudoAddressSpace*␉readWrite(␊ |
202 | ␉␉␉␉␉␉␉␉␉␉␉FWAddress ␉␉␉␉addr,␊ |
203 | ␉␉␉␉␉␉␉␉␉␉␉UInt32 ␉␉␉␉␉len, ␊ |
204 | ␉␉␉␉␉␉␉␉␉␉␉FWReadCallback ␉␉␉reader,␊ |
205 | ␉␉␉␉␉␉␉␉␉␉␉FWWriteCallback ␉␉writer,␊ |
206 | ␉␉␉␉␉␉␉␉␉␉␉void*␉␉␉␉␉refcon);␊ |
207 | ␊ |
208 | /*!␉@function␉simpleRead␊ |
209 | ␉@abstract␉Create an address space object to handle read-only memory (eg. the local ROM)␊ |
210 | ␉␉␉␉handles everything itself␊ |
211 | ␉@param␉␉bus␉␉Points to IOFireWireBus object.␊ |
212 | ␉@param␉␉addr␉Points to starting address for the Pseudo Address Space.␊ |
213 | ␉@param␉␉len␉␉Length of the Pseudo Address Space.␊ |
214 | ␉@param␉␉data␉The virtual address of the first byte in the memory.␊ |
215 | ␉@result␉␉returns valid IOFWPseudoAddressSpace on success, null on failure */␊ |
216 | static IOFWPseudoAddressSpace*␉simpleRead(␊ |
217 | IOFireWireBus*␉␉␉bus,␊ |
218 | ␉␉␉ FWAddress*␉␉␉␉addr,␊ |
219 | ␉␉␉␉␉␉␉␉␉␉␉UInt32 ␉␉␉␉␉len,␊ |
220 | ␉␉␉␉␉␉␉␉␉␉␉const void*␉␉␉␉data);␊ |
221 | ␊ |
222 | /*!␉@function␉simpleReadFixed␊ |
223 | ␉@abstract␉Create an address space object to handle fixed read-only memory (eg. the local ROM)␊ |
224 | ␉␉␉␉handles everything itself␊ |
225 | ␉@param␉␉bus␉␉Points to IOFireWireBus object.␊ |
226 | ␉@param␉␉addr␉Points to starting address for the Pseudo Address Space.␊ |
227 | ␉@param␉␉len␉␉Length of the Pseudo Address Space.␊ |
228 | ␉@param␉␉data␉The virtual address of the first byte in the memory.␊ |
229 | ␉@result␉␉returns valid IOFWPseudoAddressSpace on success, null on failure */␊ |
230 | static IOFWPseudoAddressSpace*␉simpleReadFixed(␊ |
231 | IOFireWireBus*␉␉␉bus,␊ |
232 | ␉␉␉ FWAddress ␉␉␉␉addr,␊ |
233 | ␉␉␉␉␉␉␉␉␉␉␉UInt32 ␉␉␉␉␉len,␊ |
234 | ␉␉␉␉␉␉␉␉␉␉␉const void*␉␉␉␉data);␊ |
235 | ␊ |
236 | /*!␉@function␉simpleRW␊ |
237 | ␉@abstract␉Create an address space object to handle r/w memory␊ |
238 | ␉␉␉␉handles everything itself␊ |
239 | ␉@param␉␉bus␉␉Points to IOFireWireBus object.␊ |
240 | ␉@param␉␉addr␉Points to starting address for the Pseudo Address Space.␊ |
241 | ␉@param␉␉len␉␉Length of the Pseudo Address Space.␊ |
242 | ␉@param␉␉data␉The virtual address of the first byte in the memory.␊ |
243 | ␉@result␉␉returns valid IOFWPseudoAddressSpace on success, null on failure */␊ |
244 | static IOFWPseudoAddressSpace*␉simpleRW(␊ |
245 | IOFireWireBus*␉␉␉bus,␊ |
246 | ␉␉␉FWAddress*␉␉␉␉addr,␊ |
247 | ␉␉␉␉␉␉␉␉␉␉␉UInt32 ␉␉␉␉␉len,␊ |
248 | ␉␉␉␉␉␉␉␉␉␉␉void *␉␉␉␉␉data);␊ |
249 | ␉␉␉␉␉␉␉␉␉␉␉␊ |
250 | /*!␉@function␉simpleRW␊ |
251 | ␉@abstract␉Create an address space object to handle r/w memory␊ |
252 | ␉␉␉␉handles everything itself␊ |
253 | ␉@param␉␉bus␉␉Points to IOFireWireBus object.␊ |
254 | ␉@param␉␉addr␉Points to starting address for the Pseudo Address Space.␊ |
255 | ␉@param␉␉data␉The virtual address of the first byte in the memory.␊ |
256 | ␉@result␉␉returns valid IOFWPseudoAddressSpace on success, null on failure */␊ |
257 | static IOFWPseudoAddressSpace*␉simpleRW(␊ |
258 | IOFireWireBus*␉␉␉bus,␊ |
259 | ␉␉␉FWAddress*␉␉␉␉addr,␊ |
260 | ␉␉␉␉␉␉␉␉␉␉␉IOMemoryDescriptor *␉data);␊ |
261 | ␉␉␉␉␉␉␉␉␉␉␉␊ |
262 | /*!␉@function␉initAll␊ |
263 | ␉@abstract␉Initialize an address space object to handle r/w memory␊ |
264 | ␉@param␉␉bus␉␉Points to IOFireWireBus object.␊ |
265 | ␉@param␉␉addr␉Points to starting address for the Pseudo Address Space.␊ |
266 | ␉@param␉␉len␉␉Length of the Pseudo Address Space.␊ |
267 | ␉@param␉␉reader␉Callback handler for incoming Read.␊ |
268 | ␉@param␉␉writer␉Callback handler for incoming Write.␊ |
269 | ␉@param␉␉refcon␉Client's callback object.␊ |
270 | ␉@result␉␉returns true on success, false on failure */␊ |
271 | virtual bool ␉␉␉␉␉initAll(␊ |
272 | IOFireWireBus*␉␉␉bus,␊ |
273 | ␉␉␉␉␉␉␉FWAddress*␉␉␉␉addr,␊ |
274 | ␉␉␉␉␉␉␉␉␉␉␉UInt32 ␉␉␉␉␉len, ␊ |
275 | ␉␉␉␉␉␉␉␉␉␉␉FWReadCallback ␉␉␉reader,␊ |
276 | ␉␉␉␉␉␉␉␉␉␉␉FWWriteCallback ␉␉writer,␊ |
277 | ␉␉␉␉␉␉␉␉␉␉␉void*␉␉␉␉␉refcon);␊ |
278 | ␉␉␉␉␉␉␉␉␉␉␉␊ |
279 | /*!␉@function␉initFixed␊ |
280 | ␉@abstract␉Initialize a fixed address space at top of kCSRRegisterSpaceBaseAddressHi␊ |
281 | ␉@param␉␉bus␉␉Points to IOFireWireBus object.␊ |
282 | ␉@param␉␉addr␉Points to starting address for the Pseudo Address Space.␊ |
283 | ␉@param␉␉reader␉Callback handler for incoming Read.␊ |
284 | ␉@param␉␉writer␉Callback handler for incoming Write.␊ |
285 | ␉@param␉␉refcon␉Client's callback object.␊ |
286 | ␉@result␉␉returns true on success, false on failure */␊ |
287 | virtual bool ␉␉␉␉␉initFixed(␊ |
288 | IOFireWireBus*␉␉␉bus,␊ |
289 | ␉␉␉␉␉␉␉ FWAddress ␉␉␉␉addr,␊ |
290 | ␉␉␉␉␉␉␉␉␉␉␉UInt32 ␉␉␉␉␉len,␊ |
291 | ␉␉␉␉␉␉␉FWReadCallback ␉␉␉reader,␊ |
292 | ␉␉␉␉␉␉␉␉␉␉␉FWWriteCallback ␉␉writer,␊ |
293 | ␉␉␉␉␉␉␉␉␉␉␉void*␉␉␉␉␉refcon);␊ |
294 | ␊ |
295 | /*!␉@function␉doRead␊ |
296 | ␉@abstract␉A method for processing an address space read request␊ |
297 | ␉@param␉␉nodeID␉FireWire Read from nodeID.␊ |
298 | ␉@param␉␉speed␉at this 'speed'.␊ |
299 | ␉@param␉␉addr␉with FireWire address 'addr'.␊ |
300 | ␉@param␉␉len␉␉read 'len' bytes from nodeID.␊ |
301 | ␉@param␉␉buf␉␉points to a memory descriptor containing the packet data.␊ |
302 | ␉@param␉␉offset␉start from this 'offset' in 'buf'.␊ |
303 | ␉@param␉␉reqrefcon Can be queried for extra info about the request.␊ |
304 | ␉@result␉␉UIn32␉returns kFWResponseComplete on success */␊ |
305 | virtual UInt32 ␉␉␉␉␉doRead(␊ |
306 | ␉␉␉␉␉␉␉␉␉␉␉UInt16 ␉␉␉␉␉nodeID, ␊ |
307 | ␉␉␉␉␉␉␉␉␉␉␉IOFWSpeed &␉␉␉␉speed, ␊ |
308 | ␉␉␉␉␉␉␉␉␉␉␉FWAddress ␉␉␉␉addr, ␊ |
309 | ␉␉␉␉␉␉␉␉␉␉␉UInt32 ␉␉␉␉␉len,␊ |
310 | ␉␉␉␉IOMemoryDescriptor **␉buf, ␊ |
311 | ␉␉␉␉␉␉␉␉␉␉␉IOByteCount * ␉␉␉offset,␊ |
312 | IOFWRequestRefCon␉␉reqrefcon);␊ |
313 | /*!␉@function␉doWrite␊ |
314 | ␉@abstract␉A method for processing an address space write request␊ |
315 | ␉@param␉␉nodeID␉FireWire Write to nodeID.␊ |
316 | ␉@param␉␉speed␉at this 'speed'.␊ |
317 | ␉@param␉␉addr␉with FireWire address 'addr'.␊ |
318 | ␉@param␉␉len␉␉write 'len' bytes to nodeID.␊ |
319 | ␉@param␉␉buf␉␉obtain bytes from location given by 'buf'.␊ |
320 | ␉@param␉␉reqrefcon Can be queried for extra info about the request.␊ |
321 | ␉@result␉␉UIn32␉returns kFWResponseComplete on success */␊ |
322 | virtual UInt32 ␉␉␉␉␉doWrite(␊ |
323 | ␉␉␉␉␉␉␉␉␉␉␉UInt16 ␉␉␉␉␉nodeID,␊ |
324 | ␉␉␉␉␉␉␉␉␉␉␉IOFWSpeed&␉␉␉␉speed,␊ |
325 | ␉␉␉␉␉␉␉␉␉␉␉FWAddress ␉␉␉␉addr,␊ |
326 | ␉␉␉␉␉␉␉␉␉␉␉UInt32 ␉␉␉␉␉len, ␊ |
327 | ␉␉␉␉␉␉␉␉␉␉␉const void*␉␉␉␉buf,␊ |
328 | IOFWRequestRefCon␉␉reqrefcon);␊ |
329 | ␊ |
330 | /*!␉@function␉contains␊ |
331 | ␉@abstract␉returns number of bytes starting at addr in this space␊ |
332 | ␉@result␉␉0 if it doesn't contain the address␊ |
333 | ␉*/␊ |
334 | virtual UInt32␉␉␉␉␉contains(FWAddress addr);␊ |
335 | ␊ |
336 | /*!␉@function␉simpleRWFixed␊ |
337 | ␉@abstract␉Create a Read/Write fixed address space at top of kCSRRegisterSpaceBaseAddressHi.␊ |
338 | ␉@param␉␉control␉Points to IOFireWireBus object.␊ |
339 | ␉@param␉␉addr␉Points to starting address for the Pseudo Address Space.␊ |
340 | ␉@param␉␉len␉␉Length of the address range.␊ |
341 | ␉@param␉␉data␉The virtual address of the first byte in the memory.␊ |
342 | ␉@result␉␉returns valid IOFWPseudoAddressSpace on success, null on failure */␊ |
343 | ␉static IOFWPseudoAddressSpace * simpleRWFixed( IOFireWireBus *control, FWAddress addr, UInt32 len, const void *data );␊ |
344 | ␊ |
345 | protected:␊ |
346 | ␉␊ |
347 | ␉virtual IOFWAddressSpaceAux * createAuxiliary( void );␊ |
348 | ␊ |
349 | protected:␊ |
350 | ␉inline void handleARxReqIntComplete( void )␊ |
351 | ␉␉{ ((IOFWPseudoAddressSpaceAux*)fIOFWAddressSpaceExpansion->fAuxiliary)->handleARxReqIntComplete(); }␊ |
352 | ␉␊ |
353 | public:␊ |
354 | /*!␉@function setARxReqIntCompleteHandler␊ |
355 | ␉@abstract Installs a callback to receive notification, when FWIM has completed␊ |
356 | ␉␉␉ ARxReqInt processing and no incoming packets are left in the queue.␊ |
357 | ␉@param refcon␉Client's callback object.␊ |
358 | ␉@param handler␉Client callback to be invoked, at the end of interrupt processing.␊ |
359 | ␉@result none.␉*/␉␊ |
360 | ␉inline void setARxReqIntCompleteHandler( void * refcon, IOFWARxReqIntCompleteHandler handler )␊ |
361 | ␉␉{ ((IOFWPseudoAddressSpaceAux*)fIOFWAddressSpaceExpansion->fAuxiliary)->setARxReqIntCompleteHandler( refcon, handler ); }␊ |
362 | ␉␉␉␊ |
363 | private:␊ |
364 | ␊ |
365 | OSMetaClassDeclareReservedUnused(IOFWPseudoAddressSpace, 0);␊ |
366 | OSMetaClassDeclareReservedUnused(IOFWPseudoAddressSpace, 1);␊ |
367 | ␊ |
368 | };␊ |
369 | ␊ |
370 | #endif␊ |
371 |