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-2000 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_IOFIREWIRESBP2USERCLIENT_H␊ |
24 | #define _IOKIT_IOFIREWIRESBP2USERCLIENT_H␊ |
25 | ␊ |
26 | #include <IOKit/IOUserClient.h>␊ |
27 | ␊ |
28 | #define FIREWIREPRIVATE␊ |
29 | #include <IOKit/firewire/IOFireWireController.h>␊ |
30 | #undef FIREWIREPRIVATE␊ |
31 | ␊ |
32 | #include <IOKit/firewire/IOFWUserObjectExporter.h>␊ |
33 | ␊ |
34 | #include <IOKit/sbp2/IOFireWireSBP2UserClientCommon.h>␊ |
35 | #include <IOKit/sbp2/IOFireWireSBP2LUN.h>␊ |
36 | ␊ |
37 | class IOFireWireSBP2UserClient : public IOUserClient␊ |
38 | {␊ |
39 | OSDeclareDefaultStructors(IOFireWireSBP2UserClient)␊ |
40 | ␊ |
41 | protected:␊ |
42 | ␊ |
43 | bool␉␉␉␉␉fOpened;␊ |
44 | ␉bool␉␉␉␉␉fStarted;␊ |
45 | IOFireWireSBP2Login * ␉fLogin;␊ |
46 | task_t␉␉␉␉␉fTask;␊ |
47 | ␉␊ |
48 | IOFireWireSBP2LUN *␉␉fProviderLUN;␊ |
49 | OSAsyncReference64␉␉fMessageCallbackAsyncRef;␊ |
50 | OSAsyncReference64␉␉fLoginCallbackAsyncRef;␊ |
51 | OSAsyncReference64␉␉fLogoutCallbackAsyncRef;␊ |
52 | OSAsyncReference64␉␉fUnsolicitedStatusNotifyAsyncRef;␊ |
53 | OSAsyncReference64␉␉fStatusNotifyAsyncRef;␊ |
54 | OSAsyncReference64␉␉fFetchAgentResetAsyncRef;␊ |
55 | ␉OSAsyncReference64␉␉fFetchAgentWriteAsyncRef;␊ |
56 | ␉␊ |
57 | ␉IOFWUserObjectExporter␉*␉fExporter;␊ |
58 | ␉␊ |
59 | ␉IOFireWireLib::UserObjectHandle␉␉fSessionRef;␊ |
60 | ␉␊ |
61 | ␉virtual IOReturn externalMethod(␉uint32_t selector, ␊ |
62 | ␉␉␉␉␉␉␉␉␉␉IOExternalMethodArguments * args,␊ |
63 | ␉␉␉␉␉␉␉␉␉␉IOExternalMethodDispatch * dispatch, ␊ |
64 | ␉␉␉␉␉␉␉␉␉␉OSObject * target, ␊ |
65 | ␉␉␉␉␉␉␉␉␉␉void * reference );␊ |
66 | public:␊ |
67 | ␊ |
68 | ␉virtual bool initWithTask( task_t owningTask, void * securityToken, UInt32 type, OSDictionary * properties );␊ |
69 | ␉virtual void free ();␊ |
70 | ␉␉␉␉␊ |
71 | virtual bool start( IOService * provider );␊ |
72 | ␊ |
73 | virtual IOReturn clientClose( void );␊ |
74 | virtual IOReturn clientDied( void );␊ |
75 | ␊ |
76 | ␉// IOFireWireSBP2ManagementORB friend class wrappers␊ |
77 | ␉virtual void flushAllManagementORBs( void );␊ |
78 | ␊ |
79 | /////////////////////////////////////////////////␊ |
80 | // IOFireWireSBP2LUN␊ |
81 | ␊ |
82 | IOReturn open( IOExternalMethodArguments * arguments );␊ |
83 | ␉IOReturn openWithSessionRef( IOExternalMethodArguments * arguments );␊ |
84 | ␉IOReturn getSessionRef( IOExternalMethodArguments * arguments );␊ |
85 | IOReturn close( IOExternalMethodArguments * arguments );␊ |
86 | ␊ |
87 | // callbacks␊ |
88 | ␉IOReturn setMessageCallback( IOExternalMethodArguments * arguments );␊ |
89 | virtual IOReturn message( UInt32 type, IOService * provider, void * arg );␊ |
90 | ␊ |
91 | /////////////////////////////////////////////////␊ |
92 | // IOFireWireSBP2Login␊ |
93 | ␊ |
94 | IOReturn setLoginCallback( IOExternalMethodArguments * arguments );␊ |
95 | ␉IOReturn setLogoutCallback( IOExternalMethodArguments * arguments );␊ |
96 | IOReturn setUnsolicitedStatusNotify( IOExternalMethodArguments * arguments );␊ |
97 | IOReturn setStatusNotify( IOExternalMethodArguments * arguments );␊ |
98 | ␉IOReturn createLogin( IOExternalMethodArguments * arguments );␊ |
99 | IOReturn releaseLogin( IOExternalMethodArguments * arguments );␊ |
100 | IOReturn submitLogin( IOExternalMethodArguments * arguments );␊ |
101 | IOReturn submitLogout( IOExternalMethodArguments * arguments );␊ |
102 | ␉IOReturn setLoginFlags( IOExternalMethodArguments * arguments );␊ |
103 | IOReturn getMaxCommandBlockSize( IOExternalMethodArguments * arguments );␊ |
104 | IOReturn getLoginID( IOExternalMethodArguments * arguments );␊ |
105 | IOReturn setReconnectTime( IOExternalMethodArguments * arguments );␊ |
106 | ␉IOReturn setMaxPayloadSize( IOExternalMethodArguments * arguments );␊ |
107 | ␊ |
108 | ␉IOReturn submitFetchAgentReset( IOExternalMethodArguments * arguments );␊ |
109 | ␉IOReturn setFetchAgentWriteCompletion( IOExternalMethodArguments * arguments );␊ |
110 | ␉IOReturn ringDoorbell( IOExternalMethodArguments * arguments );␊ |
111 | ␉IOReturn enableUnsolicitedStatus( IOExternalMethodArguments * arguments );␊ |
112 | ␉IOReturn setBusyTimeoutRegisterValue( IOExternalMethodArguments * arguments );␊ |
113 | IOReturn setPassword( IOExternalMethodArguments * arguments );␊ |
114 | ␊ |
115 | ␉// callbacks␊ |
116 | ␉␊ |
117 | ␉static void staticLoginCallback( void * refCon, FWSBP2LoginCompleteParamsPtr params );␊ |
118 | virtual void loginCallback( FWSBP2LoginCompleteParamsPtr params );␊ |
119 | ␊ |
120 | ␉static void staticLogoutCallback( void * refCon, FWSBP2LogoutCompleteParamsPtr params );␊ |
121 | virtual void logoutCallback( FWSBP2LogoutCompleteParamsPtr params );␊ |
122 | ␊ |
123 | ␉static void staticStatusNotify( void * refCon, FWSBP2NotifyParams * params );␊ |
124 | virtual void statusNotify( FWSBP2NotifyParams * params );␊ |
125 | ␊ |
126 | ␉static void staticUnsolicitedNotify( void * refCon, FWSBP2NotifyParams * params );␊ |
127 | virtual void unsolicitedNotify( FWSBP2NotifyParams * params );␊ |
128 | ␊ |
129 | ␉static void staticFetchAgentWriteComplete( void * refCon, IOReturn status, IOFireWireSBP2ORB * orb );␊ |
130 | ␉virtual void fetchAgentWriteComplete( IOReturn status, IOFireWireSBP2ORB * orb );␊ |
131 | ␊ |
132 | static void staticFetchAgentResetComplete( void * refCon, IOReturn status );␊ |
133 | virtual void fetchAgentResetComplete( IOReturn status );␊ |
134 | ␉␊ |
135 | /////////////////////////////////////////////////␊ |
136 | // IOFireWireSBP2ORB␊ |
137 | ␊ |
138 | IOReturn createORB( IOExternalMethodArguments * arguments );␊ |
139 | IOReturn releaseORB( IOExternalMethodArguments * arguments );␊ |
140 | ␉IOReturn submitORB( IOExternalMethodArguments * arguments );␊ |
141 | IOReturn setCommandFlags( IOExternalMethodArguments * arguments );␊ |
142 | IOReturn setORBRefCon( IOExternalMethodArguments * arguments );␊ |
143 | ␉IOReturn setMaxORBPayloadSize( IOExternalMethodArguments * arguments );␊ |
144 | IOReturn setCommandTimeout( IOExternalMethodArguments * arguments );␊ |
145 | ␉IOReturn setCommandGeneration( IOExternalMethodArguments * arguments );␊ |
146 | IOReturn setToDummy( IOExternalMethodArguments * arguments );␊ |
147 | IOReturn setCommandBuffersAsRanges( IOExternalMethodArguments * arguments );␊ |
148 | IOReturn releaseCommandBuffers( IOExternalMethodArguments * arguments );␊ |
149 | IOReturn setCommandBlock( IOExternalMethodArguments * arguments );␊ |
150 | ␉␊ |
151 | ␉// LSI workaround␊ |
152 | IOReturn LSIWorkaroundSetCommandBuffersAsRanges( IOExternalMethodArguments * arguments );␊ |
153 | ␉IOReturn LSIWorkaroundSyncBuffersForOutput( IOExternalMethodArguments * arguments );␊ |
154 | ␉IOReturn LSIWorkaroundSyncBuffersForInput( IOExternalMethodArguments * arguments );␊ |
155 | ␉␉␉␉␉␉␉␉␉␉␉␉␉␉␉␊ |
156 | /////////////////////////////////////////////////␊ |
157 | // IOFireWireSBP2MgmtORB␊ |
158 | ␊ |
159 | ␉IOReturn createMgmtORB( IOExternalMethodArguments * arguments );␊ |
160 | IOReturn releaseMgmtORB( IOExternalMethodArguments * arguments );␊ |
161 | IOReturn setMgmtORBCallback( IOExternalMethodArguments * arguments );␊ |
162 | IOReturn submitMgmtORB( IOExternalMethodArguments * arguments );␉␊ |
163 | ␉IOReturn setMgmtORBCommandFunction( IOExternalMethodArguments * arguments );␊ |
164 | ␉IOReturn setMgmtORBManageeORB( IOExternalMethodArguments * arguments );␊ |
165 | ␉IOReturn setMgmtORBManageeLogin( IOExternalMethodArguments * arguments );␊ |
166 | ␉IOReturn setMgmtORBResponseBuffer( IOExternalMethodArguments * arguments );␊ |
167 | ␊ |
168 | ␉// callbacks␊ |
169 | static void staticMgmtORBCallback( void * refCon, IOReturn status, IOFireWireSBP2ManagementORB * orb );␊ |
170 | virtual void mgmtORBCallback( IOReturn status, IOFireWireSBP2ManagementORB * orb );␊ |
171 | ␉␊ |
172 | ␉// IOFireWireSBP2MgmtORB friend class wrappers␊ |
173 | ␉virtual void setMgmtORBAsyncCallbackReference( IOFireWireSBP2ManagementORB * orb, void * asyncRef ); ␊ |
174 | ␉virtual void getMgmtORBAsyncCallbackReference( IOFireWireSBP2ManagementORB * orb, void * asyncRef );␊ |
175 | ␊ |
176 | ␉ uint32_t␉␉ checkScalarInputCount;␊ |
177 | uint32_t␉␉ checkStructureInputSize;␊ |
178 | uint32_t␉␉ checkScalarOutputCount;␊ |
179 | uint32_t␉␉ checkStructureOutputSize;␊ |
180 | ␊ |
181 | IOReturn checkArguments( IOExternalMethodArguments * args, uint32_t scalarInCount, uint32_t structInCount, ␊ |
182 | ␉␉␉␉␉␉␉␉␉␉␉␉␉uint32_t scalarOutCount, uint32_t structOutCount );␊ |
183 | ␊ |
184 | };␊ |
185 | ␊ |
186 | #endif |