Root/
Source at commit 1548 created 12 years 10 months ago. By blackosx, Added detection for FAT format created by Lion's Disk Utility. Enhanced install log. | |
---|---|
1 | /*␊ |
2 | * Copyright (c) 1998-2009 Apple Inc. All rights reserved.␊ |
3 | *␊ |
4 | * @APPLE_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. Please obtain a copy of the License at␊ |
10 | * http://www.opensource.apple.com/apsl/ and read it before using this␊ |
11 | * file.␊ |
12 | * ␊ |
13 | * The Original Code and all software distributed under the License are␊ |
14 | * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER␊ |
15 | * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,␊ |
16 | * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,␊ |
17 | * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.␊ |
18 | * Please see the License for the specific language governing rights and␊ |
19 | * limitations under the License.␊ |
20 | * ␊ |
21 | * @APPLE_LICENSE_HEADER_END@␊ |
22 | */␊ |
23 | ␊ |
24 | ␊ |
25 | #ifndef _IOKIT_IO_SCSI_BLOCK_COMMANDS_DEVICE_H_␊ |
26 | #define _IOKIT_IO_SCSI_BLOCK_COMMANDS_DEVICE_H_␊ |
27 | ␊ |
28 | #if defined(KERNEL) && defined(__cplusplus)␊ |
29 | ␊ |
30 | //-----------------------------------------------------------------------------␊ |
31 | //␉Constants␊ |
32 | //-----------------------------------------------------------------------------␊ |
33 | ␊ |
34 | // SBC power states as defined in T10:996D SCSI Block Commands - 3 (SBC-3)␊ |
35 | // Revision 8c, November 13, 1997, pages 10-11.␊ |
36 | enum␊ |
37 | {␊ |
38 | ␉kSBCPowerStateSystemSleep ␉= 0,␊ |
39 | ␉kSBCPowerStateSleep ␉␉= 1,␊ |
40 | ␉kSBCPowerStateStandby ␉␉= 2,␊ |
41 | ␉kSBCPowerStateIdle␉␉␉= 3,␊ |
42 | ␉kSBCPowerStateActive␉␉= 4,␊ |
43 | ␉kSBCNumPowerStates␉␉␉= 5␊ |
44 | };␊ |
45 | ␊ |
46 | enum␊ |
47 | {␊ |
48 | ␉kMediaStateUnlocked␉= 0,␊ |
49 | ␉kMediaStateLocked ␉= 1␊ |
50 | };␊ |
51 | ␊ |
52 | ␊ |
53 | //-----------------------------------------------------------------------------␊ |
54 | //␉Includes␊ |
55 | //-----------------------------------------------------------------------------␊ |
56 | ␊ |
57 | // General IOKit headers␊ |
58 | #include <IOKit/IOLib.h>␊ |
59 | #include <IOKit/IOMemoryDescriptor.h>␊ |
60 | #include <IOKit/IOService.h>␊ |
61 | #include <IOKit/IOUserClient.h>␊ |
62 | ␊ |
63 | // Generic IOKit storage related headers␊ |
64 | #include <IOKit/storage/IOStorage.h>␊ |
65 | ␊ |
66 | // SCSI Architecture Model Family includes␊ |
67 | #include <IOKit/scsi/IOSCSIPrimaryCommandsDevice.h>␊ |
68 | ␊ |
69 | ␊ |
70 | // Forward declaration for the SCSIBlockCommands that is used internally by the␊ |
71 | // IOSCSIBlockCommandsDevice class.␊ |
72 | class SCSIBlockCommands;␊ |
73 | ␊ |
74 | //-----------------------------------------------------------------------------␊ |
75 | //␉Class Declaration␊ |
76 | //-----------------------------------------------------------------------------␊ |
77 | ␊ |
78 | class IOSCSIBlockCommandsDevice : public IOSCSIPrimaryCommandsDevice␊ |
79 | {␊ |
80 | ␉␊ |
81 | ␉OSDeclareAbstractStructors ( IOSCSIBlockCommandsDevice )␊ |
82 | ␉␊ |
83 | private:␊ |
84 | ␉␊ |
85 | ␊ |
86 | #ifndef __LP64__␊ |
87 | ␉␊ |
88 | ␉SCSIBlockCommands *␉␉fSCSIBlockCommandObject;␊ |
89 | ␉SCSIBlockCommands *␉␉GetSCSIBlockCommandObject ( void );␊ |
90 | ␉␊ |
91 | #endif␉/* !__LP64__ */␊ |
92 | ␊ |
93 | ␉IOReturn␉␉␉␉GetWriteCacheState ( IOMemoryDescriptor * ␉buffer,␊ |
94 | ␉␉␉␉␉␉␉␉␉␉␉␉ UInt8␉␉␉␉␉modePageControlValue );␊ |
95 | ␉␊ |
96 | ␉static void␉␉␉␉AsyncReadWriteComplete ( SCSITaskIdentifier␉completedTask );␊ |
97 | ␉␊ |
98 | protected:␊ |
99 | ␉␊ |
100 | ␉// Reserve space for future expansion.␊ |
101 | struct IOSCSIBlockCommandsDeviceExpansionData␊ |
102 | ␉{␊ |
103 | ␉␉IONotifier *␉␉fPowerDownNotifier;␊ |
104 | ␉␉bool␉␉␉␉fWriteCacheEnabled;␊ |
105 | ␉␉bool␉␉␉␉fDeviceIsShared;␊ |
106 | ␉␉UInt64␉␉␉␉fMediumBlockCount64;␊ |
107 | ␉␉bool␉␉␉␉fDeviceHasSATTranslation;␊ |
108 | ␉␉bool␉␉␉␉fProtocolSpecificPowerControl;␊ |
109 | ␉␉bool␉␉␉␉fRequiresEjectWithStartStopUnit;␊ |
110 | ␉};␊ |
111 | IOSCSIBlockCommandsDeviceExpansionData * fIOSCSIBlockCommandsDeviceReserved;␊ |
112 | ␉␊ |
113 | ␉#define fPowerDownNotifier␉fIOSCSIBlockCommandsDeviceReserved->fPowerDownNotifier␊ |
114 | ␉#define fWriteCacheEnabled␉fIOSCSIBlockCommandsDeviceReserved->fWriteCacheEnabled␊ |
115 | ␉␊ |
116 | ␉// The fDeviceIsShared is used to indicate whether this device exists on a Physical␊ |
117 | ␉// Interconnect that allows multiple initiators to access it. This is used mainly␊ |
118 | ␉// by the power management code to not send power state related START_STOP_UNIT␊ |
119 | ␉// commands to the device.␊ |
120 | ␉// The fDeviceIsShared value is also used to prevent power state commands from being␊ |
121 | ␉// sent to manual eject device since these devices behave better when allowed to␊ |
122 | ␉// manage their own power.␊ |
123 | ␉#define fDeviceIsShared␉fIOSCSIBlockCommandsDeviceReserved->fDeviceIsShared␊ |
124 | ␉␊ |
125 | ␉// The fMediumBlockCount64 provides support for 64 bit LBAs and␊ |
126 | ␉// replaces fMediumBlockCount which only supports 32 bits.␊ |
127 | ␉// This value should not be directly accessed and instead the member routine ␊ |
128 | ␉// ReportMediumTotalBlockCount() should be used to retrieve it and the member routine␊ |
129 | ␉// SetMediumCharacteristics() should be used to set it.␊ |
130 | ␉#define fMediumBlockCount64␉fIOSCSIBlockCommandsDeviceReserved->fMediumBlockCount64␊ |
131 | ␉␊ |
132 | ␉#define fDeviceHasSATTranslation fIOSCSIBlockCommandsDeviceReserved->fDeviceHasSATTranslation␊ |
133 | ␉␊ |
134 | ␉// Device support protocol specific power off␊ |
135 | ␉#define fProtocolSpecificPowerControl fIOSCSIBlockCommandsDeviceReserved->fProtocolSpecificPowerControl␊ |
136 | ␉␊ |
137 | ␉// Device requires START_STOP_UNIT for ejects, regardless if PREVENT_ALLOW_MEIDUMREMOVAL␊ |
138 | ␉// failed. ␊ |
139 | ␉#define fRequiresEjectWithStartStopUnit fIOSCSIBlockCommandsDeviceReserved->fRequiresEjectWithStartStopUnit␊ |
140 | ␉␊ |
141 | private:␊ |
142 | ␉/* OBSOLETE. Use IOSCSIPrimaryCommandsDevice::Get/SetANSIVersion */␊ |
143 | ␉UInt8␉␉␉␉fANSIVersion;␊ |
144 | ␊ |
145 | protected:␊ |
146 | ␉// ---- Device Characteristics ----␊ |
147 | ␉bool␉␉␉␉fMediaIsRemovable;␊ |
148 | ␉␊ |
149 | ␉// ---- Medium Characteristics ----␊ |
150 | ␉bool␉␉␉␉fMediumPresent;␊ |
151 | ␉␊ |
152 | private:␊ |
153 | ␉// The byte count of each physical block on the medium.␊ |
154 | ␉// This value should not be directly accessed and instead the member routine ␊ |
155 | ␉// ReportMediumBlockSize() should be used to retrieve it and the member routine␊ |
156 | ␉// SetMediumCharacteristics() should be used to set it.␊ |
157 | ␉UInt32␉␉␉␉fMediumBlockSize;␊ |
158 | ␉␊ |
159 | ␉// The total number of blocks of fMediumBlockSize on the medium.␊ |
160 | ␉// OBSOLETE. Use fMediumBlockCount64 instead which allows for support of␊ |
161 | ␉// devices that have 33 through 64 bit LBA values.␊ |
162 | ␉UInt32␉␉␉␉fMediumBlockCount;␊ |
163 | ␉␊ |
164 | protected:␊ |
165 | ␉// Whether the installed medium is protected from writes␊ |
166 | ␉bool␉␉␉␉fMediumIsWriteProtected;␊ |
167 | ␉␊ |
168 | ␉// Whether user removal of medium has been prevented␉␊ |
169 | ␉bool␉␉␉␉fMediumRemovalPrevented;␊ |
170 | ␉␊ |
171 | ␉// Indicates whether this is a known manual eject device␊ |
172 | ␉bool␉␉␉␉fKnownManualEject;␊ |
173 | ␉␊ |
174 | ␉// Polling thread variables␊ |
175 | ␉thread_call_t␉␉fPollingThread;␊ |
176 | ␉UInt32␉␉␉␉fPollingMode;␊ |
177 | ␉enum␊ |
178 | ␉{␊ |
179 | ␉␉kPollingMode_Suspended␉␉= 0,␊ |
180 | ␉␉kPollingMode_NewMedia ␉␉= 1,␊ |
181 | ␉␉kPollingMode_MediaRemoval␉= 2␊ |
182 | ␉};␊ |
183 | ␉␊ |
184 | ␉// ---- Methods for controlling the current state of device support ----␊ |
185 | ␉virtual bool␉␉InitializeDeviceSupport ( void );␊ |
186 | ␉virtual void␉␉StartDeviceSupport ( void );␊ |
187 | ␉virtual void␉␉SuspendDeviceSupport ( void );␊ |
188 | ␉virtual void␉␉ResumeDeviceSupport ( void );␊ |
189 | ␉virtual void␉␉StopDeviceSupport ( void );␊ |
190 | ␉virtual void␉␉TerminateDeviceSupport ( void );␊ |
191 | ␊ |
192 | ␉virtual void ␉␉free ( void );␊ |
193 | ␊ |
194 | #ifndef __LP64__␊ |
195 | ␉␊ |
196 | ␉// This method will retrieve the SCSI Primary Command Set object for␊ |
197 | ␉// the class. For subclasses, this will be overridden using a␊ |
198 | ␉// dynamic cast on the subclasses base command set object.␊ |
199 | ␉virtual SCSIPrimaryCommands *␉GetSCSIPrimaryCommandObject ( void );␊ |
200 | ␉␊ |
201 | ␉virtual bool␉␉CreateCommandSetObjects ( void );␊ |
202 | ␉virtual void␉␉FreeCommandSetObjects ( void );␊ |
203 | ␉␊ |
204 | #endif␉/* !__LP64__ */␊ |
205 | ␊ |
206 | ␉virtual bool␉␉ClearNotReadyStatus ( void );␊ |
207 | ␉virtual void ␉␉CreateStorageServiceNub ( void );␊ |
208 | ␉virtual bool␉␉DetermineDeviceCharacteristics ( void );␊ |
209 | ␉␊ |
210 | ␉// ---- Methods used for controlling the polling thread ----␊ |
211 | ␉virtual void␉␉ProcessPoll ( void );␊ |
212 | ␉virtual void␉␉EnablePolling ( void );␊ |
213 | ␉virtual void␉␉DisablePolling ( void );␊ |
214 | ␉␊ |
215 | ␉// Main and support methods for polling for new Media␊ |
216 | ␉virtual void␉␉PollForNewMedia ( void );␊ |
217 | ␉virtual bool␉␉DetermineMediaPresence ( void );␊ |
218 | ␉virtual bool␉␉PreventMediumRemoval ( void );␊ |
219 | ␉virtual bool␉␉DetermineMediumCapacity (␊ |
220 | ␉␉␉␉␉␉␉UInt64 * ␉␉␉␉blockSize,␊ |
221 | ␉␉␉␉␉␉␉UInt64 * ␉␉␉␉blockCount );␊ |
222 | ␉virtual bool␉␉DetermineMediumWriteProtectState ( void );␊ |
223 | ␉␊ |
224 | ␉// Main and support methods for polling for Media removal␊ |
225 | ␉virtual void␉␉PollForMediaRemoval ( void );␊ |
226 | ␉␊ |
227 | ␉// ---- Methods used for handling medium characteristics ----␊ |
228 | ␉␊ |
229 | ␉// OBSOLETE - Use the version compatible with 64 bit LBAs instead.␊ |
230 | ␉virtual void␉␉SetMediumCharacteristics (␊ |
231 | ␉␉␉␉␉␉␉UInt32 ␉␉␉␉␉blockSize,␊ |
232 | ␉␉␉␉␉␉␉UInt32 ␉␉␉␉␉blockCount );␊ |
233 | ␊ |
234 | ␉void␉␉␉␉SetMediumCharacteristics (␊ |
235 | ␉␉␉␉␉␉␉UInt64 ␉␉␉␉␉blockSize,␊ |
236 | ␉␉␉␉␉␉␉UInt64 ␉␉␉␉␉blockCount );␊ |
237 | ␉␊ |
238 | ␉virtual void␉␉ResetMediumCharacteristics ( void );␊ |
239 | ␊ |
240 | ␉virtual IOReturn␉IssueRead (␊ |
241 | ␉␉␉␉␉␉␉IOMemoryDescriptor *␉buffer,␊ |
242 | ␉␉␉␉␉␉ ␉UInt64␉␉␉␉␉startBlock,␊ |
243 | ␉␉␉␉␉ ␉␉UInt64␉␉␉␉␉blockCount );␊ |
244 | ␉␊ |
245 | ␉virtual IOReturn␉IssueRead (␊ |
246 | ␉␉␉␉␉␉␉IOMemoryDescriptor *␉buffer,␊ |
247 | ␉␉␉␉␉ ␉␉UInt64␉␉␉␉␉startBlock,␊ |
248 | ␉␉␉␉␉ ␉␉UInt64␉␉␉␉␉blockCount,␊ |
249 | ␉␉␉␉␉ ␉␉void * ␉␉␉␉␉clientData );␊ |
250 | ␉␊ |
251 | ␉virtual IOReturn␉IssueWrite (␊ |
252 | ␉␉␉␉␉␉␉IOMemoryDescriptor *␉buffer,␊ |
253 | ␉␉␉␉␉␉␉UInt64␉␉␉␉␉startBlock,␊ |
254 | ␉␉␉␉␉ ␉␉UInt64␉␉␉␉␉blockCount );␊ |
255 | ␉␊ |
256 | ␉virtual IOReturn␉IssueWrite (␊ |
257 | ␉␉␉␉␉␉␉IOMemoryDescriptor *␉buffer,␊ |
258 | ␉␉␉␉␉␉ ␉UInt64␉␉␉␉␉startBlock,␊ |
259 | ␉␉␉␉␉ ␉␉UInt64␉␉␉␉␉blockCount,␊ |
260 | ␉␉␉␉␉␉␉void * ␉␉␉␉␉clientData );␊ |
261 | ␉␊ |
262 | ␉// ----- Power Management Support ------␊ |
263 | ␉␊ |
264 | ␉// We override this method to set our power states and register ourselves␊ |
265 | ␉// as a power policy maker.␊ |
266 | ␉virtual void ␉␉InitializePowerManagement ( IOService * provider );␊ |
267 | ␉␊ |
268 | ␉// We override this method so that when we register for power management,␊ |
269 | ␉// we go to our active power state (which the drive is definitely in␊ |
270 | ␉// at startup time).␊ |
271 | ␉virtual UInt32␉␉GetInitialPowerState ( void );␊ |
272 | ␉␊ |
273 | ␉// We override this method in order to provide the number of transitions␊ |
274 | ␉// from Fully active to Sleep state so that the idle timer can be adjusted␊ |
275 | ␉// to the appropriate time period based on the disk spindown time set in␊ |
276 | ␉// the Energy Saver prefs panel.␊ |
277 | ␉virtual UInt32␉␉GetNumberOfPowerStateTransitions ( void );␊ |
278 | ␉␊ |
279 | ␉// The TicklePowerManager method is called to tell the power manager that␊ |
280 | ␉// the device needs to be in a certain power state to handle requests.␊ |
281 | ␉virtual void␉␉TicklePowerManager ( void );␊ |
282 | ␉␊ |
283 | ␉// The HandlePowerChange method is the state machine for power management.␊ |
284 | ␉// It is guaranteed to be on its own thread of execution (different from␊ |
285 | ␉// the power manager thread AND the workloop thread. This routine can␊ |
286 | ␉// send sync or async calls to the drive without worrying about threading␊ |
287 | ␉// issues.␊ |
288 | ␉virtual void␉␉HandlePowerChange ( void );␊ |
289 | ␉␊ |
290 | ␉// The HandleCheckPowerState (void) method is on the serialized side of the␊ |
291 | ␉// command gate and can change member variables safely without␊ |
292 | ␉// multi-threading issues. It's main purpose is to call the superclass'␊ |
293 | ␉// HandleCheckPowerState ( UInt32 maxPowerState ) with the max power state␊ |
294 | ␉// the class registered with.␊ |
295 | ␉virtual void␉␉HandleCheckPowerState ( void );␊ |
296 | ␉␊ |
297 | ␉// The VerifyMediumPresence method is called to see if the medium which we␊ |
298 | ␉// anticipated being there is still there.␊ |
299 | ␉virtual bool␉␉VerifyMediumPresence ( void );␊ |
300 | ␉␊ |
301 | public:␊ |
302 | ␉␊ |
303 | ␉static ␉void␉␉sProcessPoll ( void * pdtDriver, void * refCon );␊ |
304 | ␉␊ |
305 | ␉// ---- Methods for controlling the device ----␊ |
306 | ␉virtual IOReturn␉SyncReadWrite (␊ |
307 | ␉␉␉␉␉␉␉IOMemoryDescriptor *␉buffer,␊ |
308 | ␉␉␉␉␉␉␉UInt64␉␉␉␉␉startBlock,␊ |
309 | ␉␉␉␉␉␉␉UInt64␉␉␉␉␉blockCount,␊ |
310 | ␉␉␉␉␉␉␉UInt64␉␉␉␉␉blockSize );␊ |
311 | ␉␊ |
312 | ␉virtual IOReturn␉AsyncReadWrite (␊ |
313 | ␉␉␉␉␉␉␉IOMemoryDescriptor *␉buffer,␊ |
314 | ␉␉␉␉␉␉␉UInt64␉␉␉␉␉startBlock,␊ |
315 | ␉␉␉␉␉␉␉UInt64␉␉␉␉␉blockCount,␊ |
316 | ␉␉␉␉␉␉␉UInt64␉␉␉␉␉blockSize,␊ |
317 | ␉␉␉␉␉␉␉void * ␉␉␉␉␉clientData );␊ |
318 | ␉␊ |
319 | ␉IOReturn␉GetWriteCacheState ( bool * enabled );␉␊ |
320 | ␉IOReturn␉SetWriteCacheState ( bool enabled );␊ |
321 | ␉void␉␉DetermineMediumGeometry ( void );␊ |
322 | ␉␊ |
323 | ␉// ---- Methods for controlling medium state ----␊ |
324 | ␉virtual IOReturn␉EjectTheMedium ( void );␊ |
325 | ␉virtual IOReturn␉LockUnlockMedium ( bool doLock );␊ |
326 | ␉virtual IOReturn␉SynchronizeCache ( void );␊ |
327 | ␉␊ |
328 | ␉// ---- Methods for controlling media format ----␊ |
329 | ␉virtual IOReturn␉FormatMedium (␊ |
330 | ␉␉␉␉␉␉␉UInt64 ␉␉␉␉␉blockCount,␊ |
331 | ␉␉␉␉␉␉␉UInt64 ␉␉␉␉␉blockSize );␊ |
332 | ␉virtual UInt32␉␉GetFormatCapacities (␊ |
333 | ␉␉␉␉␉␉␉UInt64 * ␉␉␉␉capacities,␊ |
334 | ␉␉␉ ␉␉␉␉UInt32 ␉␉␉␉capacitiesMaxCount ) const;␊ |
335 | ␉␊ |
336 | ␉// ---- Query methods to report device characteristics ----␊ |
337 | ␉␊ |
338 | ␉// Report the maximum number of blocks that the device can handle per␊ |
339 | ␉// read or write. A value of 0 (zero) indicates there is no limit aside␊ |
340 | ␉// from the size of the method's return parameter.␊ |
341 | ␉virtual UInt64␉␉ReportDeviceMaxBlocksReadTransfer ( void );␊ |
342 | ␉virtual UInt64␉␉ReportDeviceMaxBlocksWriteTransfer ( void );␊ |
343 | ␉␊ |
344 | ␉// Report whether the device supports removal of the media.␊ |
345 | ␉virtual bool␉␉ReportDeviceMediaRemovability ( void );␊ |
346 | ␉␊ |
347 | ␉// ---- Query methods to report installed medium characteristics ----␊ |
348 | ␉virtual UInt64␉␉ReportMediumBlockSize ( void );␊ |
349 | ␉virtual UInt64␉␉ReportMediumTotalBlockCount ( void );␊ |
350 | ␉virtual bool␉␉ReportMediumWriteProtection ( void );␊ |
351 | ␉␊ |
352 | ␉␊ |
353 | protected:␊ |
354 | ␉␊ |
355 | ␊ |
356 | #ifndef __LP64__␊ |
357 | ␉␊ |
358 | ␉// Command methods to access all commands available to SBC based devices.␊ |
359 | ␉virtual bool ERASE_10 (␊ |
360 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
361 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉ERA,␊ |
362 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉RELADR,␊ |
363 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
364 | ␉␉␉␉␉␉SCSICmdField2Byte ␉␉␉TRANSFER_LENGTH,␊ |
365 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
366 | ␊ |
367 | ␉virtual bool ERASE_12 (␊ |
368 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
369 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉ERA,␊ |
370 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉RELADR,␊ |
371 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
372 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉TRANSFER_LENGTH,␊ |
373 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
374 | ␊ |
375 | ␉virtual bool FORMAT_UNIT (␊ |
376 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
377 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
378 | ␉␉␉␉␉␉IOByteCount␉␉␉␉␉defectListSize,␊ |
379 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉FMTDATA,␊ |
380 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉CMPLST,␊ |
381 | ␉␉␉␉␉␉SCSICmdField3Bit ␉␉␉DEFECT_LIST_FORMAT,␊ |
382 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉VENDOR_SPECIFIC,␊ |
383 | ␉␉␉␉␉␉SCSICmdField2Byte ␉␉␉INTERLEAVE,␊ |
384 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
385 | ␉␊ |
386 | ␉// Defined in SBC-2 Section 5.41␊ |
387 | ␉bool FORMAT_UNIT (␊ |
388 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
389 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
390 | ␉␉␉␉␉␉IOByteCount␉␉␉␉␉defectListSize,␊ |
391 | ␉␉␉␉␉␉SCSICmdField1Bit␉␉␉FMTPINFO,␊ |
392 | ␉␉␉␉␉␉SCSICmdField1Bit␉␉␉RTO_REQ,␊ |
393 | ␉␉␉␉␉␉SCSICmdField1Bit␉␉␉LONGLIST,␊ |
394 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉FMTDATA, ␊ |
395 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉CMPLST,␊ |
396 | ␉␉␉␉␉␉SCSICmdField3Bit ␉␉␉DEFECT_LIST_FORMAT, ␊ |
397 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉VENDOR_SPECIFIC, ␊ |
398 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
399 | ␉ ␉ ␊ |
400 | ␉virtual bool LOCK_UNLOCK_CACHE (␊ |
401 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
402 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉LOCK,␊ |
403 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉RELADR,␊ |
404 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
405 | ␉␉␉␉␉␉SCSICmdField2Byte ␉␉␉NUMBER_OF_BLOCKS,␊ |
406 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
407 | ␊ |
408 | ␉// Defined in SBC-2 section 5.5␊ |
409 | ␉bool LOCK_UNLOCK_CACHE (␊ |
410 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
411 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉LOCK,␊ |
412 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
413 | ␉␉␉␉␉␉SCSICmdField2Byte ␉␉␉NUMBER_OF_BLOCKS,␊ |
414 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
415 | ␊ |
416 | ␉bool LOCK_UNLOCK_CACHE_16 (␊ |
417 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
418 | ␉␉␉␉␉␉SCSICmdField1Bit␉␉␉LOCK,␊ |
419 | ␉␉␉␉␉␉SCSICmdField8Byte␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
420 | ␉␉␉␉␉␉SCSICmdField4Byte␉␉␉NUMBER_OF_BLOCKS,␊ |
421 | ␉␉␉␉␉␉SCSICmdField1Byte␉␉␉CONTROL );␊ |
422 | ␉␉␉␉␉␉␊ |
423 | ␉virtual bool MEDIUM_SCAN (␊ |
424 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
425 | ␉␉␉ ␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
426 | ␉␉ ␉␉␉␉SCSICmdField1Bit ␉␉␉WBS,␊ |
427 | ␉␉ ␉␉␉␉SCSICmdField1Bit ␉␉␉ASA,␊ |
428 | ␉␉ ␉␉␉␉SCSICmdField1Bit ␉␉␉PSD,␊ |
429 | ␉␉ ␉␉␉␉SCSICmdField1Bit ␉␉␉PRA,␊ |
430 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉RELADR,␊ |
431 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
432 | ␉␉␉␉␉␉SCSICmdField2Byte ␉␉␉PARAMETER_LIST_LENGTH,␊ |
433 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
434 | ␊ |
435 | ␉virtual bool PREFETCH (␊ |
436 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
437 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉IMMED,␊ |
438 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉RELADR,␊ |
439 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
440 | ␉␉␉␉␉␉SCSICmdField2Byte ␉␉␉TRANSFER_LENGTH,␊ |
441 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
442 | ␊ |
443 | ␉// Defined in SBC-2 section 5.7␊ |
444 | ␉bool PREFETCH (␊ |
445 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
446 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉IMMED,␊ |
447 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
448 | ␉␉␉␉␉␉SCSICmdField5Bit␉␉␉GROUP_NUMBER,␊ |
449 | ␉␉␉␉␉␉SCSICmdField2Byte ␉␉␉TRANSFER_LENGTH,␊ |
450 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
451 | ␊ |
452 | ␉bool PREFETCH_16 (␊ |
453 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
454 | ␉␉␉␉␉␉SCSICmdField1Bit␉␉␉IMMED,␊ |
455 | ␉␉␉␉␉␉SCSICmdField8Byte␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
456 | ␉␉␉␉␉␉SCSICmdField4Byte␉␉␉TRANSFER_LENGTH,␊ |
457 | ␉␉␉␉␉␉SCSICmdField5Bit␉␉␉GROUP_NUMBER,␊ |
458 | ␉␉␉␉␉␉SCSICmdField1Byte␉␉␉CONTROL );␊ |
459 | ␉␊ |
460 | ␉virtual bool READ_6 (␊ |
461 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
462 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
463 | ␉␉␉␉␉␉UInt32␉␉␉␉␉␉blockSize,␊ |
464 | ␉␉␉␉␉␉SCSICmdField21Bit ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
465 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉TRANSFER_LENGTH,␊ |
466 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
467 | ␊ |
468 | #endif␉/* __LP64__ */␊ |
469 | ␉␊ |
470 | ␉virtual bool READ_10 (␊ |
471 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
472 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
473 | ␉␉␉␉␉␉UInt32␉␉␉␉␉␉blockSize,␊ |
474 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉DPO,␊ |
475 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉FUA,␊ |
476 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉RELADR,␊ |
477 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
478 | ␉␉␉␉␉␉SCSICmdField2Byte ␉␉␉TRANSFER_LENGTH,␊ |
479 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
480 | ␊ |
481 | ␉// Defined in SBC-2 section 5.10␊ |
482 | ␉bool READ_10 (␊ |
483 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
484 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
485 | ␉␉␉␉␉␉UInt32␉␉␉␉␉␉blockSize,␊ |
486 | ␉␉␉␉␉␉SCSICmdField3Bit ␉␉␉RDPROTECT,␊ |
487 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉DPO,␊ |
488 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉FUA,␊ |
489 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉FUA_NV,␊ |
490 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
491 | ␉␉␉␉␉␉SCSICmdField5Bit␉␉␉GROUP_NUMBER,␊ |
492 | ␉␉␉␉␉␉SCSICmdField2Byte ␉␉␉TRANSFER_LENGTH,␊ |
493 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
494 | ␊ |
495 | ␉virtual bool READ_12 (␊ |
496 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
497 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
498 | ␉␉␉␉␉␉UInt32␉␉␉␉␉␉blockSize,␊ |
499 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉DPO,␊ |
500 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉FUA,␊ |
501 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉RELADR,␊ |
502 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
503 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉TRANSFER_LENGTH,␊ |
504 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
505 | ␊ |
506 | ␉// Defined in SBC-2 section 5.11␊ |
507 | ␉bool READ_12 (␊ |
508 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
509 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
510 | ␉␉␉␉␉␉UInt32␉␉␉␉␉␉blockSize,␊ |
511 | ␉␉␉␉␉␉SCSICmdField3Bit␉␉␉RDPROTECT,␊ |
512 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉DPO,␊ |
513 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉FUA,␊ |
514 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉FUA_NV,␊ |
515 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
516 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉TRANSFER_LENGTH,␊ |
517 | ␉␉␉␉␉␉SCSICmdField5Bit␉␉␉GROUP_NUMBER,␊ |
518 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
519 | ␊ |
520 | ␉bool READ_16 (␊ |
521 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
522 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
523 | ␉␉␉␉␉␉UInt32␉␉␉␉␉␉blockSize,␊ |
524 | ␉␉␉␉␉␉SCSICmdField3Bit␉␉␉RDPROTECT,␊ |
525 | ␉␉␉␉␉␉SCSICmdField1Bit␉␉␉DPO,␊ |
526 | ␉␉␉␉␉␉SCSICmdField1Bit␉␉␉FUA,␊ |
527 | ␉␉␉␉␉␉SCSICmdField1Bit␉␉␉FUA_NV,␊ |
528 | ␉␉␉␉␉␉SCSICmdField8Byte␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
529 | ␉␉␉␉␉␉SCSICmdField4Byte␉␉␉TRANSFER_LENGTH,␊ |
530 | ␉␉␉␉␉␉SCSICmdField5Bit␉␉␉GROUP_NUMBER,␊ |
531 | ␉␉␉␉␉␉SCSICmdField1Byte␉␉␉CONTROL );␊ |
532 | ␉␊ |
533 | ␉virtual bool READ_CAPACITY (␊ |
534 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
535 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
536 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉RELADR,␊ |
537 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
538 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉PMI,␊ |
539 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
540 | ␉␊ |
541 | ␉bool READ_CAPACITY_16 (␊ |
542 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
543 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
544 | ␉␉␉␉␉␉SCSICmdField8Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
545 | ␉␉␉␉␉␉SCSICmdField4Byte␉␉␉ALLOCATION_LENGTH,␊ |
546 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉PMI,␊ |
547 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
548 | ␊ |
549 | #ifndef __LP64__␊ |
550 | ␊ |
551 | ␉virtual bool READ_DEFECT_DATA_10 (␊ |
552 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
553 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
554 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉PLIST,␊ |
555 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉GLIST,␊ |
556 | ␉␉␉␉␉␉SCSICmdField3Bit ␉␉␉DEFECT_LIST_FORMAT,␊ |
557 | ␉␉␉␉␉␉SCSICmdField2Byte ␉␉␉ALLOCATION_LENGTH,␊ |
558 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
559 | ␊ |
560 | ␉virtual bool READ_DEFECT_DATA_12 (␊ |
561 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
562 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
563 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉PLIST,␊ |
564 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉GLIST,␊ |
565 | ␉␉␉␉␉␉SCSICmdField3Bit ␉␉␉DEFECT_LIST_FORMAT,␊ |
566 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉ALLOCATION_LENGTH,␊ |
567 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
568 | ␊ |
569 | ␉virtual bool READ_GENERATION (␊ |
570 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
571 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
572 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉RELADR,␊ |
573 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
574 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉ALLOCATION_LENGTH,␊ |
575 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
576 | ␊ |
577 | ␉virtual bool READ_LONG (␊ |
578 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
579 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
580 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉CORRCT,␊ |
581 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉RELADR,␊ |
582 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
583 | ␉␉␉␉␉␉SCSICmdField2Byte ␉␉␉BYTE_TRANSFER_LENGTH,␊ |
584 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
585 | ␊ |
586 | ␉bool READ_LONG_16 (␊ |
587 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
588 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
589 | ␉␉␉␉␉␉SCSICmdField8Byte␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
590 | ␉␉␉␉␉␉SCSICmdField2Byte␉␉␉BYTE_TRANSFER_LENGTH,␊ |
591 | ␉␉␉␉␉␉SCSICmdField1Bit␉␉␉CORRCT,␊ |
592 | ␉␉␉␉␉␉SCSICmdField1Byte␉␉␉CONTROL );␊ |
593 | ␉␉␊ |
594 | ␉virtual bool READ_UPDATED_BLOCK_10 (␊ |
595 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
596 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
597 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉DPO,␊ |
598 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉FUA,␊ |
599 | ␉␉␉␉␉ ␉SCSICmdField1Bit ␉␉␉RELADR,␊ |
600 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
601 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉LATEST,␊ |
602 | ␉␉␉␉␉ ␉SCSICmdField15Bit ␉␉␉GENERATION_ADDRESS,␊ |
603 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
604 | ␊ |
605 | ␉virtual bool REASSIGN_BLOCKS (␊ |
606 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
607 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
608 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
609 | ␊ |
610 | ␉// Defined in SBC-2 section 5.20␊ |
611 | ␉bool REASSIGN_BLOCKS (␊ |
612 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
613 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
614 | ␉␉␉␉␉␉SCSICmdField1Bit␉␉␉LONGLBA,␊ |
615 | ␉␉␉␉␉␉SCSICmdField1Bit␉␉␉LONGLIST,␊ |
616 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
617 | ␉␊ |
618 | ␉virtual bool REBUILD (␊ |
619 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
620 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
621 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉DPO,␊ |
622 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉FUA,␊ |
623 | ␉␉␉␉␉ ␉SCSICmdField1Bit ␉␉␉INTDATA,␊ |
624 | ␉␉␉␉␉␉SCSICmdField2Bit ␉␉␉PORT_CONTROL,␊ |
625 | ␉␉␉␉␉ ␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
626 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉REBUILD_LENGTH,␊ |
627 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉PARAMETER_LIST_LENGTH,␊ |
628 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
629 | ␉␊ |
630 | ␉virtual bool REGENERATE (␊ |
631 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
632 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
633 | ␉␉␉␉␉␉SCSICmdField1Bit␉␉␉DPO,␊ |
634 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉FUA,␊ |
635 | ␉␉␉␉␉ ␉SCSICmdField1Bit ␉␉␉INTDATA,␊ |
636 | ␉␉␉␉␉ ␉SCSICmdField2Bit ␉␉␉PORT_CONTROL,␊ |
637 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
638 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉REBUILD_LENGTH,␊ |
639 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉PARAMETER_LIST_LENGTH,␊ |
640 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
641 | ␊ |
642 | ␉virtual bool REZERO_UNIT (␊ |
643 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
644 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
645 | ␊ |
646 | ␉virtual bool SEARCH_DATA_EQUAL_10 (␊ |
647 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
648 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
649 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉INVERT,␊ |
650 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉SPNDAT,␊ |
651 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉RELADR,␊ |
652 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
653 | ␉␉␉␉␉␉SCSICmdField2Byte ␉␉␉NUMBER_OF_BLOCKS_TO_SEARCH,␊ |
654 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
655 | ␊ |
656 | ␉virtual bool SEARCH_DATA_HIGH_10 (␊ |
657 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
658 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
659 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉INVERT,␊ |
660 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉SPNDAT,␊ |
661 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉RELADR,␊ |
662 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
663 | ␉␉␉␉␉␉SCSICmdField2Byte ␉␉␉NUMBER_OF_BLOCKS_TO_SEARCH,␊ |
664 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
665 | ␊ |
666 | ␉virtual bool SEARCH_DATA_LOW_10 (␊ |
667 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
668 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
669 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉INVERT,␊ |
670 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉SPNDAT,␊ |
671 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉RELADR,␊ |
672 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
673 | ␉␉␉␉␉␉SCSICmdField2Byte ␉␉␉NUMBER_OF_BLOCKS_TO_SEARCH,␊ |
674 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
675 | ␊ |
676 | ␉virtual bool SEEK_6 (␊ |
677 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
678 | ␉␉␉␉␉␉SCSICmdField21Bit ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
679 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
680 | ␊ |
681 | ␉virtual bool SEEK_10 (␊ |
682 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
683 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
684 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
685 | ␊ |
686 | ␉virtual bool SET_LIMITS_10 (␊ |
687 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
688 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉RDINH,␊ |
689 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉WRINH,␊ |
690 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
691 | ␉␉␉␉␉␉SCSICmdField2Byte ␉␉␉NUMBER_OF_BLOCKS,␊ |
692 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
693 | ␊ |
694 | ␉virtual bool SET_LIMITS_12 (␊ |
695 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
696 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉RDINH,␊ |
697 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉WRINH,␊ |
698 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
699 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉NUMBER_OF_BLOCKS,␊ |
700 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
701 | ␊ |
702 | #endif␉/* __LP64__ */␊ |
703 | ␉␊ |
704 | ␉virtual bool START_STOP_UNIT (␊ |
705 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
706 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉IMMED,␊ |
707 | ␉␉␉␉␉␉SCSICmdField4Bit ␉␉␉POWER_CONDITIONS,␊ |
708 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉LOEJ,␊ |
709 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉START,␊ |
710 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
711 | ␊ |
712 | ␉virtual bool SYNCHRONIZE_CACHE (␊ |
713 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
714 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉IMMED,␊ |
715 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉RELADR,␊ |
716 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
717 | ␉␉␉␉␉␉SCSICmdField2Byte ␉␉␉NUMBER_OF_BLOCKS,␊ |
718 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
719 | ␊ |
720 | ␉// Defined in SBC-2 section 5.22␊ |
721 | ␉bool SYNCHRONIZE_CACHE (␊ |
722 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
723 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉IMMED,␊ |
724 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉SYNC_NV,␊ |
725 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
726 | ␉␉␉␉␉␉SCSICmdField5Bit␉␉␉GROUP_NUMBER,␊ |
727 | ␉␉␉␉␉␉SCSICmdField2Byte ␉␉␉NUMBER_OF_BLOCKS,␊ |
728 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
729 | ␊ |
730 | ␉bool SYNCRONIZE_CACHE_16 (␊ |
731 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
732 | ␉␉␉␉␉␉SCSICmdField1Bit␉␉␉SYNC_NV,␊ |
733 | ␉␉␉␉␉␉SCSICmdField1Bit␉␉␉IMMED,␊ |
734 | ␉␉␉␉␉␉SCSICmdField8Byte␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
735 | ␉␉␉␉␉␉SCSICmdField4Byte␉␉␉NUMBER_OF_BLOCKS,␊ |
736 | ␉␉␉␉␉␉SCSICmdField5Bit␉␉␉GROUP_NUMBER,␊ |
737 | ␉␉␉␉␉␉SCSICmdField1Byte␉␉␉CONTROL );␊ |
738 | ␉␉␉␉␉␉␊ |
739 | #ifndef __LP64__␊ |
740 | ␊ |
741 | ␉virtual bool UPDATE_BLOCK (␊ |
742 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
743 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
744 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉RELADR,␊ |
745 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
746 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
747 | ␊ |
748 | ␉virtual bool VERIFY_10 (␊ |
749 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
750 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉DPO,␊ |
751 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉BLKVFY,␊ |
752 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉BYTCHK,␊ |
753 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉RELADR,␊ |
754 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
755 | ␉␉␉␉␉␉SCSICmdField2Byte ␉␉␉VERIFICATION_LENGTH,␊ |
756 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
757 | ␉␊ |
758 | ␉// Defined in SBC-2 section 5.24␊ |
759 | ␉bool VERIFY_10 (␊ |
760 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
761 | ␉␉␉␉␉␉SCSICmdField3Bit ␉␉␉VRPROTECT,␊ |
762 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉DPO,␊ |
763 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉BYTCHK,␊ |
764 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
765 | ␉␉␉␉␉␉SCSICmdField5Bit␉␉␉GROUP_NUMBER,␊ |
766 | ␉␉␉␉␉␉SCSICmdField2Byte ␉␉␉VERIFICATION_LENGTH,␊ |
767 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
768 | ␊ |
769 | ␉virtual bool VERIFY_12 (␊ |
770 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
771 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉DPO,␊ |
772 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉BLKVFY,␊ |
773 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉BYTCHK,␊ |
774 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉RELADR,␊ |
775 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
776 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉VERIFICATION_LENGTH,␊ |
777 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
778 | ␊ |
779 | ␉// Defined in SBC-2 section 5.25␊ |
780 | ␉bool VERIFY_12 (␊ |
781 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
782 | ␉␉␉␉␉␉SCSICmdField3Bit ␉␉␉VRPROTECT,␊ |
783 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉DPO,␊ |
784 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉BYTCHK,␊ |
785 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
786 | ␉␉␉␉␉␉SCSICmdField5Bit␉␉␉GROUP_NUMBER,␊ |
787 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉VERIFICATION_LENGTH,␊ |
788 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
789 | ␊ |
790 | ␉bool VERIFY_16 (␊ |
791 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
792 | ␉␉␉␉␉␉SCSICmdField3Bit␉␉␉VRPROTECT,␊ |
793 | ␉␉␉␉␉␉SCSICmdField1Bit␉␉␉DPO,␊ |
794 | ␉␉␉␉␉␉SCSICmdField1Bit␉␉␉BYTCHK,␊ |
795 | ␉␉␉␉␉␉SCSICmdField8Byte␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
796 | ␉␉␉␉␉␉SCSICmdField4Byte␉␉␉VERIFICATION_LENGTH,␊ |
797 | ␉␉␉␉␉␉SCSICmdField5Bit␉␉␉GROUP_NUMBER,␊ |
798 | ␉␉␉␉␉␉SCSICmdField1Byte␉␉␉CONTROL );␊ |
799 | ␉␊ |
800 | ␉virtual bool WRITE_6 (␊ |
801 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
802 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
803 | ␉␉␉␉␉␉UInt32␉␉␉␉␉␉blockSize,␊ |
804 | ␉␉␉␉␉␉SCSICmdField2Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
805 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉TRANSFER_LENGTH,␊ |
806 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
807 | ␉␊ |
808 | #endif␉/* __LP64__ */␊ |
809 | ␊ |
810 | ␉virtual bool WRITE_10 (␊ |
811 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
812 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
813 | ␉␉␉␉␉␉UInt32␉␉␉␉␉␉blockSize,␊ |
814 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉DPO,␊ |
815 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉FUA,␊ |
816 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉EBP,␊ |
817 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉RELADR,␊ |
818 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
819 | ␉␉␉␉␉␉SCSICmdField2Byte ␉␉␉TRANSFER_LENGTH,␊ |
820 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
821 | ␊ |
822 | ␉// Defined in SBC-2 section 5.29␊ |
823 | ␉bool WRITE_10 (␊ |
824 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
825 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
826 | ␉␉␉␉␉␉UInt32␉␉␉␉␉␉blockSize,␊ |
827 | ␉␉␉␉␉␉SCSICmdField3Bit␉␉␉WRPROTECT,␊ |
828 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉DPO,␊ |
829 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉FUA,␊ |
830 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉FUA_NV,␊ |
831 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
832 | ␉␉␉␉␉␉SCSICmdField5Bit␉␉␉GROUP_NUMBER,␊ |
833 | ␉␉␉␉␉␉SCSICmdField2Byte ␉␉␉TRANSFER_LENGTH,␊ |
834 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
835 | ␊ |
836 | ␉virtual bool WRITE_12 (␊ |
837 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
838 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
839 | ␉␉␉␉␉␉UInt32␉␉␉␉␉␉blockSize,␊ |
840 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉DPO,␊ |
841 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉FUA,␊ |
842 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉EBP,␊ |
843 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉RELADR,␊ |
844 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
845 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉TRANSFER_LENGTH,␊ |
846 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
847 | ␊ |
848 | ␉// Defined in SBC-2 section 5.30␊ |
849 | ␉bool WRITE_12 (␊ |
850 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
851 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
852 | ␉␉␉␉␉␉UInt32␉␉␉␉␉␉blockSize,␊ |
853 | ␉␉␉␉␉␉SCSICmdField3Bit␉␉␉WRPROTECT,␊ |
854 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉DPO,␊ |
855 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉FUA,␊ |
856 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉FUA_NV,␊ |
857 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
858 | ␉␉␉␉␉␉SCSICmdField5Bit␉␉␉GROUP_NUMBER,␊ |
859 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉TRANSFER_LENGTH,␊ |
860 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
861 | ␊ |
862 | ␉bool WRITE_16 (␊ |
863 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
864 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
865 | ␉␉␉␉␉␉UInt32␉␉␉␉␉␉blockSize,␊ |
866 | ␉␉␉␉␉␉SCSICmdField3Bit␉␉␉WRPROTECT,␊ |
867 | ␉␉␉␉␉␉SCSICmdField1Bit␉␉␉DPO,␊ |
868 | ␉␉␉␉␉␉SCSICmdField1Bit␉␉␉FUA,␊ |
869 | ␉␉␉␉␉␉SCSICmdField1Bit␉␉␉FUA_NV,␊ |
870 | ␉␉␉␉␉␉SCSICmdField8Byte␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
871 | ␉␉␉␉␉␉SCSICmdField4Byte␉␉␉TRANSFER_LENGTH,␊ |
872 | ␉␉␉␉␉␉SCSICmdField5Bit␉␉␉GROUP_NUMBER,␊ |
873 | ␉␉␉␉␉␉SCSICmdField1Byte␉␉␉CONTROL );␊ |
874 | ␊ |
875 | #ifndef __LP64__␊ |
876 | ␉␉␉␉␊ |
877 | ␉virtual bool WRITE_AND_VERIFY_10 (␊ |
878 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
879 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
880 | ␉␉␉␉␉␉UInt32␉␉␉␉␉␉blockSize,␊ |
881 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉DPO,␊ |
882 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉EBP,␊ |
883 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉BYTCHK,␊ |
884 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉RELADR,␊ |
885 | ␉␉␉␉␉␉SCSICmdField4Byte␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
886 | ␉␉␉␉␉␉SCSICmdField2Byte ␉␉␉TRANSFER_LENGTH,␊ |
887 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
888 | ␊ |
889 | ␉// Defined in SBC-2 section 5.33␊ |
890 | ␉bool WRITE_AND_VERIFY_10 (␊ |
891 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
892 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
893 | ␉␉␉␉␉␉UInt32␉␉␉␉␉␉blockSize,␊ |
894 | ␉␉␉␉␉␉SCSICmdField3Bit␉␉␉WRPROTECT,␊ |
895 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉DPO,␊ |
896 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉BYTCHK,␊ |
897 | ␉␉␉␉␉␉SCSICmdField4Byte␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
898 | ␉␉␉␉␉␉SCSICmdField5Bit␉␉␉GROUP_NUMBER,␊ |
899 | ␉␉␉␉␉␉SCSICmdField2Byte ␉␉␉TRANSFER_LENGTH,␊ |
900 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
901 | ␊ |
902 | ␉virtual bool WRITE_AND_VERIFY_12 (␊ |
903 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
904 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
905 | ␉␉␉␉␉␉UInt32␉␉␉␉␉␉blockSize,␊ |
906 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉DPO,␊ |
907 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉EBP,␊ |
908 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉BYTCHK,␊ |
909 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉RELADR,␊ |
910 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
911 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉TRANSFER_LENGTH,␊ |
912 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
913 | ␉␊ |
914 | ␉// Defined in SBC-2 section 5.34␊ |
915 | ␉bool WRITE_AND_VERIFY_12 (␊ |
916 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
917 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
918 | ␉␉␉␉␉␉UInt32␉␉␉␉␉␉blockSize,␊ |
919 | ␉␉␉␉␉␉SCSICmdField3Bit␉␉␉WRPROTECT,␊ |
920 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉DPO,␊ |
921 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉BYTCHK,␊ |
922 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
923 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉TRANSFER_LENGTH,␊ |
924 | ␉␉␉␉␉␉SCSICmdField5Bit␉␉␉GROUP_NUMBER,␊ |
925 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
926 | ␊ |
927 | ␉bool WRITE_AND_VERIFY_16 (␊ |
928 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
929 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
930 | ␉␉␉␉␉␉UInt32␉␉␉␉␉␉blockSize,␊ |
931 | ␉␉␉␉␉␉SCSICmdField3Bit␉␉␉WRPROTECT,␊ |
932 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉DPO,␊ |
933 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉BYTCHK,␊ |
934 | ␉␉␉␉␉␉SCSICmdField8Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
935 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉TRANSFER_LENGTH,␊ |
936 | ␉␉␉␉␉␉SCSICmdField5Bit␉␉␉GROUP_NUMBER,␊ |
937 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
938 | ␊ |
939 | ␊ |
940 | ␉virtual bool WRITE_LONG (␊ |
941 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
942 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
943 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉RELADR,␊ |
944 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
945 | ␉␉␉␉␉␉SCSICmdField2Byte ␉␉␉TRANSFER_LENGTH,␊ |
946 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
947 | ␊ |
948 | ␉bool WRITE_LONG_16 (␊ |
949 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
950 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
951 | ␉␉␉␉␉␉SCSICmdField8Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
952 | ␉␉␉␉␉␉SCSICmdField2Byte ␉␉␉TRANSFER_LENGTH,␊ |
953 | ␉␉␉␉␉␉SCSICmdField1Bit␉␉␉CORRCT,␊ |
954 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
955 | ␊ |
956 | ␉virtual bool WRITE_SAME (␊ |
957 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
958 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
959 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉PBDATA,␊ |
960 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉LBDATA,␊ |
961 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉RELADR,␊ |
962 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
963 | ␉␉␉␉␉␉SCSICmdField2Byte ␉␉␉TRANSFER_LENGTH,␊ |
964 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
965 | ␊ |
966 | ␉// Defined in SBC-2 section 5.39␊ |
967 | ␉bool WRITE_SAME (␊ |
968 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
969 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
970 | ␉␉␉␉␉␉SCSICmdField3Bit␉␉␉WRPROTECT,␊ |
971 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉PBDATA,␊ |
972 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉LBDATA,␊ |
973 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
974 | ␉␉␉␉␉␉SCSICmdField5Bit␉␉␉GROUP_NUMBER,␊ |
975 | ␉␉␉␉␉␉SCSICmdField2Byte ␉␉␉TRANSFER_LENGTH,␊ |
976 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
977 | ␊ |
978 | ␉bool WRITE_SAME_16 (␊ |
979 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
980 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
981 | ␉␉␉␉␉␉SCSICmdField3Bit␉␉␉WRPROTECT,␊ |
982 | ␉␉␉␉␉␉SCSICmdField1Bit␉␉␉PBDATA,␊ |
983 | ␉␉␉␉␉␉SCSICmdField1Bit␉␉␉LBDATA,␊ |
984 | ␉␉␉␉␉␉SCSICmdField8Byte␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
985 | ␉␉␉␉␉␉SCSICmdField4Byte␉␉␉TRANSFER_LENGTH,␊ |
986 | ␉␉␉␉␉␉SCSICmdField5Bit␉␉␉GROUP_NUMBER,␊ |
987 | ␉␉␉␉␉␉SCSICmdField1Byte␉␉␉CONTROL );␊ |
988 | ␊ |
989 | ␉virtual bool XDREAD (␊ |
990 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
991 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
992 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
993 | ␉␉␉␉␉␉SCSICmdField2Byte ␉␉␉TRANSFER_LENGTH,␊ |
994 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
995 | ␊ |
996 | ␉// Defined in SBC-2 section 5.42␊ |
997 | ␉bool XDREAD (␊ |
998 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
999 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
1000 | ␉␉␉␉␉␉SCSICmdField1Bit␉␉␉XORPINFO,␊ |
1001 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
1002 | ␉␉␉␉␉␉SCSICmdField5Bit␉␉␉GROUP_NUMBER,␊ |
1003 | ␉␉␉␉␉␉SCSICmdField2Byte ␉␉␉TRANSFER_LENGTH,␊ |
1004 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
1005 | ␊ |
1006 | ␉virtual bool XDWRITE (␊ |
1007 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
1008 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
1009 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉DPO,␊ |
1010 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉FUA,␊ |
1011 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉DISABLE_WRITE,␊ |
1012 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
1013 | ␉␉␉␉␉␉SCSICmdField2Byte ␉␉␉TRANSFER_LENGTH,␊ |
1014 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
1015 | ␊ |
1016 | ␉// Defined in SBC-2 section 5.43␊ |
1017 | ␉bool XDWRITE (␊ |
1018 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
1019 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
1020 | ␉␉␉␉␉␉SCSICmdField3Bit␉␉␉WRPROTECT,␊ |
1021 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉DPO,␊ |
1022 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉FUA,␊ |
1023 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉DISABLE_WRITE,␊ |
1024 | ␉␉␉␉␉␉SCSICmdField1Bit␉␉␉FUA_NV,␊ |
1025 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
1026 | ␉␉␉␉␉␉SCSICmdField5Bit␉␉␉GROUP_NUMBER,␊ |
1027 | ␉␉␉␉␉␉SCSICmdField2Byte ␉␉␉TRANSFER_LENGTH,␊ |
1028 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
1029 | ␊ |
1030 | ␉virtual bool XDWRITE_EXTENDED (␊ |
1031 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
1032 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
1033 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉TABLE_ADDRESS,␊ |
1034 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉DPO,␊ |
1035 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉FUA,␊ |
1036 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉DISABLE_WRITE,␊ |
1037 | ␉␉␉␉␉␉SCSICmdField2Bit ␉␉␉PORT_CONTROL,␊ |
1038 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
1039 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉SECONDARY_BLOCK_ADDRESS,␊ |
1040 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉TRANSFER_LENGTH,␊ |
1041 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉SECONDARY_ADDRESS,␊ |
1042 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
1043 | ␉␊ |
1044 | ␉// Defined in SBC-2 section 5.46␊ |
1045 | ␉bool XDWRITEREAD_10 (␊ |
1046 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
1047 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
1048 | ␉␉␉␉␉␉SCSICmdField3Bit␉␉␉WRPROTECT,␊ |
1049 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉DPO,␊ |
1050 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉FUA,␊ |
1051 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉DISABLE_WRITE,␊ |
1052 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉FUA_NV,␊ |
1053 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉XORPINFO,␊ |
1054 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
1055 | ␉␉␉␉␉␉SCSICmdField5Bit␉␉␉GROUP_NUMBER,␊ |
1056 | ␉␉␉␉␉␉SCSICmdField2Byte ␉␉␉TRANSFER_LENGTH,␊ |
1057 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
1058 | ␉␊ |
1059 | ␉virtual bool XPWRITE (␊ |
1060 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
1061 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
1062 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉DPO,␊ |
1063 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉FUA,␊ |
1064 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
1065 | ␉␉␉␉␉␉SCSICmdField2Byte ␉␉␉TRANSFER_LENGTH,␊ |
1066 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
1067 | ␊ |
1068 | ␉// Defined in SBC-2 section 5.48␊ |
1069 | ␉bool XPWRITE (␊ |
1070 | ␉␉␉␉␉␉SCSITaskIdentifier␉␉␉request,␊ |
1071 | ␉␉␉␉␉␉IOMemoryDescriptor *␉␉dataBuffer,␊ |
1072 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉DPO,␊ |
1073 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉FUA,␊ |
1074 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉FUA_NV,␊ |
1075 | ␉␉␉␉␉␉SCSICmdField1Bit ␉␉␉XORPINFO,␊ |
1076 | ␉␉␉␉␉␉SCSICmdField4Byte ␉␉␉LOGICAL_BLOCK_ADDRESS,␊ |
1077 | ␉␉␉␉␉␉SCSICmdField5Bit␉␉␉GROUP_NUMBER,␊ |
1078 | ␉␉␉␉␉␉SCSICmdField2Byte ␉␉␉TRANSFER_LENGTH,␊ |
1079 | ␉␉␉␉␉␉SCSICmdField1Byte ␉␉␉CONTROL );␊ |
1080 | ␊ |
1081 | #endif␉/* __LP64__ */␊ |
1082 | ␉␊ |
1083 | ␉␊ |
1084 | ␉/* Added with 10.2 */␉␊ |
1085 | ␉OSMetaClassDeclareReservedUsed ( IOSCSIBlockCommandsDevice, 1 );␊ |
1086 | ␉␊ |
1087 | public:␊ |
1088 | ␉␊ |
1089 | ␉virtual IOReturn␉PowerDownHandler (␉void * ␉␉␉refCon,␊ |
1090 | ␉␉␉␉␉␉␉␉␉␉␉UInt32 ␉␉␉messageType,␊ |
1091 | ␉␉␉␉␉␉␉␉␉␉␉IOService * ␉provider,␊ |
1092 | ␉␉␉␉␉␉␉␉␉␉␉void * ␉␉␉messageArgument,␊ |
1093 | ␉␉␉␉␉␉␉␉␉␉␉vm_size_t ␉␉argSize );␊ |
1094 | ␉␊ |
1095 | ␊ |
1096 | ␉/* Added with 10.2 */␉␊ |
1097 | ␉OSMetaClassDeclareReservedUsed ( IOSCSIBlockCommandsDevice, 2 );␊ |
1098 | ␉␊ |
1099 | protected:␊ |
1100 | ␉␊ |
1101 | ␉virtual␉void␉␉SetMediumIcon ( void );␊ |
1102 | ␉␊ |
1103 | ␉␊ |
1104 | ␉/* Added with 10.3.3 */␉␉␊ |
1105 | ␉OSMetaClassDeclareReservedUsed ( IOSCSIBlockCommandsDevice, 3 );␊ |
1106 | ␉␊ |
1107 | protected:␊ |
1108 | ␊ |
1109 | ␉virtual␉void AsyncReadWriteCompletion ( SCSITaskIdentifier completedTask );␊ |
1110 | ␉␊ |
1111 | ␉␊ |
1112 | ␉/* Added with 10.6.0 */␊ |
1113 | ␉OSMetaClassDeclareReservedUsed ( IOSCSIBlockCommandsDevice, 4 );␊ |
1114 | ␉␊ |
1115 | public:␊ |
1116 | ␉␊ |
1117 | ␉virtual␉IOReturn AsyncReadWrite (␊ |
1118 | ␉␉␉␉␉␉␉IOMemoryDescriptor *␉buffer,␊ |
1119 | ␉␉␉␉␉␉␉UInt64␉␉␉␉␉startBlock,␊ |
1120 | ␉␉␉␉␉␉␉UInt64␉␉␉␉␉blockCount,␊ |
1121 | ␉␉␉␉␉␉␉UInt64␉␉␉␉␉blockSize,␊ |
1122 | ␉␉␉␉␉␉␉IOStorageAttributes *␉attributes,␊ |
1123 | ␉␉␉␉␉␉␉void * ␉␉␉␉␉clientData );␊ |
1124 | ␉␊ |
1125 | ␉␊ |
1126 | private:␊ |
1127 | ␉␊ |
1128 | ␉// Space reserved for future expansion.␊ |
1129 | ␉OSMetaClassDeclareReservedUnused ( IOSCSIBlockCommandsDevice, 5 );␊ |
1130 | ␉OSMetaClassDeclareReservedUnused ( IOSCSIBlockCommandsDevice, 6 );␊ |
1131 | ␉OSMetaClassDeclareReservedUnused ( IOSCSIBlockCommandsDevice, 7 );␊ |
1132 | ␉OSMetaClassDeclareReservedUnused ( IOSCSIBlockCommandsDevice, 8 );␊ |
1133 | ␉OSMetaClassDeclareReservedUnused ( IOSCSIBlockCommandsDevice, 9 );␊ |
1134 | ␉OSMetaClassDeclareReservedUnused ( IOSCSIBlockCommandsDevice, 10 );␊ |
1135 | ␉OSMetaClassDeclareReservedUnused ( IOSCSIBlockCommandsDevice, 11 );␊ |
1136 | ␉OSMetaClassDeclareReservedUnused ( IOSCSIBlockCommandsDevice, 12 );␊ |
1137 | ␉OSMetaClassDeclareReservedUnused ( IOSCSIBlockCommandsDevice, 13 );␊ |
1138 | ␉OSMetaClassDeclareReservedUnused ( IOSCSIBlockCommandsDevice, 14 );␊ |
1139 | ␉OSMetaClassDeclareReservedUnused ( IOSCSIBlockCommandsDevice, 15 );␊ |
1140 | ␉OSMetaClassDeclareReservedUnused ( IOSCSIBlockCommandsDevice, 16 );␊ |
1141 | ␉␊ |
1142 | };␊ |
1143 | ␊ |
1144 | #endif␉/* defined(KERNEL) && defined(__cplusplus) */␊ |
1145 | ␊ |
1146 | #endif /* _IOKIT_IO_SCSI_BLOCK_COMMANDS_DEVICE_H_ */␊ |
1147 |