IOSCSIBlockCommandsDevice.h [plain text]
#ifndef _IOKIT_IO_SCSI_BLOCK_COMMANDS_DEVICE_H_
#define _IOKIT_IO_SCSI_BLOCK_COMMANDS_DEVICE_H_
#if defined(KERNEL) && defined(__cplusplus)
enum
{
kSBCPowerStateSystemSleep = 0,
kSBCPowerStateSleep = 1,
kSBCPowerStateStandby = 2,
kSBCPowerStateIdle = 3,
kSBCPowerStateActive = 4,
kSBCNumPowerStates = 5
};
enum
{
kMediaStateUnlocked = 0,
kMediaStateLocked = 1
};
#include <IOKit/IOLib.h>
#include <IOKit/IOMemoryDescriptor.h>
#include <IOKit/storage/IOStorage.h>
#include <IOKit/scsi/IOSCSIPrimaryCommandsDevice.h>
class SCSIBlockCommands;
class IOSCSIBlockCommandsDevice : public IOSCSIPrimaryCommandsDevice
{
OSDeclareAbstractStructors ( IOSCSIBlockCommandsDevice )
private:
SCSIBlockCommands * fSCSIBlockCommandObject;
SCSIBlockCommands * GetSCSIBlockCommandObject ( void );
IOReturn GetWriteCacheState ( IOMemoryDescriptor * buffer,
UInt8 modePageControlValue );
static void AsyncReadWriteComplete ( SCSITaskIdentifier completedTask );
protected:
struct IOSCSIBlockCommandsDeviceExpansionData
{
IONotifier * fPowerDownNotifier;
bool fWriteCacheEnabled;
bool fDeviceIsShared;
UInt64 fMediumBlockCount64;
};
IOSCSIBlockCommandsDeviceExpansionData * fIOSCSIBlockCommandsDeviceReserved;
#define fPowerDownNotifier fIOSCSIBlockCommandsDeviceReserved->fPowerDownNotifier
#define fWriteCacheEnabled fIOSCSIBlockCommandsDeviceReserved->fWriteCacheEnabled
#define fDeviceIsShared fIOSCSIBlockCommandsDeviceReserved->fDeviceIsShared
#define fMediumBlockCount64 fIOSCSIBlockCommandsDeviceReserved->fMediumBlockCount64
private:
UInt8 fANSIVersion;
protected:
bool fMediaIsRemovable;
bool fMediumPresent;
private:
UInt32 fMediumBlockSize;
UInt32 fMediumBlockCount;
protected:
bool fMediumIsWriteProtected;
bool fMediumRemovalPrevented;
bool fKnownManualEject;
thread_call_t fPollingThread;
UInt32 fPollingMode;
enum
{
kPollingMode_Suspended = 0,
kPollingMode_NewMedia = 1,
kPollingMode_MediaRemoval = 2
};
virtual bool InitializeDeviceSupport ( void );
virtual void StartDeviceSupport ( void );
virtual void SuspendDeviceSupport ( void );
virtual void ResumeDeviceSupport ( void );
virtual void StopDeviceSupport ( void );
virtual void TerminateDeviceSupport ( void );
virtual SCSIPrimaryCommands * GetSCSIPrimaryCommandObject ( void );
virtual bool CreateCommandSetObjects ( void );
virtual void FreeCommandSetObjects ( void );
virtual bool ClearNotReadyStatus ( void );
virtual void CreateStorageServiceNub ( void );
virtual bool DetermineDeviceCharacteristics ( void );
virtual void ProcessPoll ( void );
virtual void EnablePolling ( void );
virtual void DisablePolling ( void );
virtual void PollForNewMedia ( void );
virtual bool DetermineMediaPresence ( void );
virtual bool PreventMediumRemoval ( void );
virtual bool DetermineMediumCapacity (
UInt64 * blockSize,
UInt64 * blockCount );
virtual bool DetermineMediumWriteProtectState ( void );
virtual void PollForMediaRemoval ( void );
virtual void SetMediumCharacteristics (
UInt32 blockSize,
UInt32 blockCount );
void SetMediumCharacteristics (
UInt64 blockSize,
UInt64 blockCount );
virtual void ResetMediumCharacteristics ( void );
virtual IOReturn IssueRead (
IOMemoryDescriptor * buffer,
UInt64 startBlock,
UInt64 blockCount );
virtual IOReturn IssueRead (
IOMemoryDescriptor * buffer,
UInt64 startBlock,
UInt64 blockCount,
void * clientData );
virtual IOReturn IssueWrite (
IOMemoryDescriptor * buffer,
UInt64 startBlock,
UInt64 blockCount );
virtual IOReturn IssueWrite (
IOMemoryDescriptor * buffer,
UInt64 startBlock,
UInt64 blockCount,
void * clientData );
virtual void InitializePowerManagement ( IOService * provider );
virtual UInt32 GetInitialPowerState ( void );
virtual UInt32 GetNumberOfPowerStateTransitions ( void );
virtual void TicklePowerManager ( void );
virtual void HandlePowerChange ( void );
virtual void HandleCheckPowerState ( void );
virtual bool VerifyMediumPresence ( void );
public:
static void sProcessPoll ( void * pdtDriver, void * refCon );
virtual IOReturn SyncReadWrite (
IOMemoryDescriptor * buffer,
UInt64 startBlock,
UInt64 blockCount,
UInt64 blockSize );
virtual IOReturn AsyncReadWrite (
IOMemoryDescriptor * buffer,
UInt64 startBlock,
UInt64 blockCount,
UInt64 blockSize,
void * clientData );
IOReturn GetWriteCacheState ( bool * enabled );
IOReturn SetWriteCacheState ( bool enabled );
void DetermineMediumGeometry ( void );
virtual IOReturn EjectTheMedium ( void );
virtual IOReturn LockUnlockMedium ( bool doLock );
virtual IOReturn SynchronizeCache ( void );
virtual IOReturn FormatMedium (
UInt64 blockCount,
UInt64 blockSize );
virtual UInt32 GetFormatCapacities (
UInt64 * capacities,
UInt32 capacitiesMaxCount ) const;
virtual UInt64 ReportDeviceMaxBlocksReadTransfer ( void );
virtual UInt64 ReportDeviceMaxBlocksWriteTransfer ( void );
virtual bool ReportDeviceMediaRemovability ( void );
virtual UInt64 ReportMediumBlockSize ( void );
virtual UInt64 ReportMediumTotalBlockCount ( void );
virtual bool ReportMediumWriteProtection ( void );
protected:
virtual bool ERASE_10 (
SCSITaskIdentifier request,
SCSICmdField1Bit ERA,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool ERASE_12 (
SCSITaskIdentifier request,
SCSICmdField1Bit ERA,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField4Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool FORMAT_UNIT (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
IOByteCount defectListSize,
SCSICmdField1Bit FMTDATA,
SCSICmdField1Bit CMPLST,
SCSICmdField3Bit DEFECT_LIST_FORMAT,
SCSICmdField1Byte VENDOR_SPECIFIC,
SCSICmdField2Byte INTERLEAVE,
SCSICmdField1Byte CONTROL );
bool FORMAT_UNIT (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
IOByteCount defectListSize,
SCSICmdField1Bit FMTPINFO,
SCSICmdField1Bit RTO_REQ,
SCSICmdField1Bit LONGLIST,
SCSICmdField1Bit FMTDATA,
SCSICmdField1Bit CMPLST,
SCSICmdField3Bit DEFECT_LIST_FORMAT,
SCSICmdField1Byte VENDOR_SPECIFIC,
SCSICmdField1Byte CONTROL );
virtual bool LOCK_UNLOCK_CACHE (
SCSITaskIdentifier request,
SCSICmdField1Bit LOCK,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte NUMBER_OF_BLOCKS,
SCSICmdField1Byte CONTROL );
bool LOCK_UNLOCK_CACHE (
SCSITaskIdentifier request,
SCSICmdField1Bit LOCK,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte NUMBER_OF_BLOCKS,
SCSICmdField1Byte CONTROL );
bool LOCK_UNLOCK_CACHE_16 (
SCSITaskIdentifier request,
SCSICmdField1Bit LOCK,
SCSICmdField8Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField4Byte NUMBER_OF_BLOCKS,
SCSICmdField1Byte CONTROL );
virtual bool MEDIUM_SCAN (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit WBS,
SCSICmdField1Bit ASA,
SCSICmdField1Bit PSD,
SCSICmdField1Bit PRA,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte PARAMETER_LIST_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool PREFETCH (
SCSITaskIdentifier request,
SCSICmdField1Bit IMMED,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
bool PREFETCH (
SCSITaskIdentifier request,
SCSICmdField1Bit IMMED,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField5Bit GROUP_NUMBER,
SCSICmdField2Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
bool PREFETCH_16 (
SCSITaskIdentifier request,
SCSICmdField1Bit IMMED,
SCSICmdField8Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField4Byte TRANSFER_LENGTH,
SCSICmdField5Bit GROUP_NUMBER,
SCSICmdField1Byte CONTROL );
virtual bool READ_6 (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
UInt32 blockSize,
SCSICmdField21Bit LOGICAL_BLOCK_ADDRESS,
SCSICmdField1Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool READ_10 (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
UInt32 blockSize,
SCSICmdField1Bit DPO,
SCSICmdField1Bit FUA,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
bool READ_10 (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
UInt32 blockSize,
SCSICmdField3Bit RDPROTECT,
SCSICmdField1Bit DPO,
SCSICmdField1Bit FUA,
SCSICmdField1Bit FUA_NV,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField5Bit GROUP_NUMBER,
SCSICmdField2Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool READ_12 (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
UInt32 blockSize,
SCSICmdField1Bit DPO,
SCSICmdField1Bit FUA,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField4Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
bool READ_12 (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
UInt32 blockSize,
SCSICmdField3Bit RDPROTECT,
SCSICmdField1Bit DPO,
SCSICmdField1Bit FUA,
SCSICmdField1Bit FUA_NV,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField4Byte TRANSFER_LENGTH,
SCSICmdField5Bit GROUP_NUMBER,
SCSICmdField1Byte CONTROL );
bool READ_16 (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
UInt32 blockSize,
SCSICmdField3Bit RDPROTECT,
SCSICmdField1Bit DPO,
SCSICmdField1Bit FUA,
SCSICmdField1Bit FUA_NV,
SCSICmdField8Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField4Byte TRANSFER_LENGTH,
SCSICmdField5Bit GROUP_NUMBER,
SCSICmdField1Byte CONTROL );
virtual bool READ_CAPACITY (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField1Bit PMI,
SCSICmdField1Byte CONTROL );
bool READ_CAPACITY_16 (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField8Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField4Byte ALLOCATION_LENGTH,
SCSICmdField1Bit PMI,
SCSICmdField1Byte CONTROL );
virtual bool READ_DEFECT_DATA_10 (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit PLIST,
SCSICmdField1Bit GLIST,
SCSICmdField3Bit DEFECT_LIST_FORMAT,
SCSICmdField2Byte ALLOCATION_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool READ_DEFECT_DATA_12 (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit PLIST,
SCSICmdField1Bit GLIST,
SCSICmdField3Bit DEFECT_LIST_FORMAT,
SCSICmdField4Byte ALLOCATION_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool READ_GENERATION (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField1Byte ALLOCATION_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool READ_LONG (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit CORRCT,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte BYTE_TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
bool READ_LONG_16 (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField8Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte BYTE_TRANSFER_LENGTH,
SCSICmdField1Bit CORRCT,
SCSICmdField1Byte CONTROL );
virtual bool READ_UPDATED_BLOCK_10 (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit DPO,
SCSICmdField1Bit FUA,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField1Bit LATEST,
SCSICmdField15Bit GENERATION_ADDRESS,
SCSICmdField1Byte CONTROL );
virtual bool REASSIGN_BLOCKS (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Byte CONTROL );
bool REASSIGN_BLOCKS (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit LONGLBA,
SCSICmdField1Bit LONGLIST,
SCSICmdField1Byte CONTROL );
virtual bool REBUILD (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit DPO,
SCSICmdField1Bit FUA,
SCSICmdField1Bit INTDATA,
SCSICmdField2Bit PORT_CONTROL,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField4Byte REBUILD_LENGTH,
SCSICmdField4Byte PARAMETER_LIST_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool REGENERATE (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit DPO,
SCSICmdField1Bit FUA,
SCSICmdField1Bit INTDATA,
SCSICmdField2Bit PORT_CONTROL,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField4Byte REBUILD_LENGTH,
SCSICmdField4Byte PARAMETER_LIST_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool REZERO_UNIT (
SCSITaskIdentifier request,
SCSICmdField1Byte CONTROL );
virtual bool SEARCH_DATA_EQUAL_10 (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit INVERT,
SCSICmdField1Bit SPNDAT,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte NUMBER_OF_BLOCKS_TO_SEARCH,
SCSICmdField1Byte CONTROL );
virtual bool SEARCH_DATA_HIGH_10 (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit INVERT,
SCSICmdField1Bit SPNDAT,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte NUMBER_OF_BLOCKS_TO_SEARCH,
SCSICmdField1Byte CONTROL );
virtual bool SEARCH_DATA_LOW_10 (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit INVERT,
SCSICmdField1Bit SPNDAT,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte NUMBER_OF_BLOCKS_TO_SEARCH,
SCSICmdField1Byte CONTROL );
virtual bool SEEK_6 (
SCSITaskIdentifier request,
SCSICmdField21Bit LOGICAL_BLOCK_ADDRESS,
SCSICmdField1Byte CONTROL );
virtual bool SEEK_10 (
SCSITaskIdentifier request,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField1Byte CONTROL );
virtual bool SET_LIMITS_10 (
SCSITaskIdentifier request,
SCSICmdField1Bit RDINH,
SCSICmdField1Bit WRINH,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte NUMBER_OF_BLOCKS,
SCSICmdField1Byte CONTROL );
virtual bool SET_LIMITS_12 (
SCSITaskIdentifier request,
SCSICmdField1Bit RDINH,
SCSICmdField1Bit WRINH,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField4Byte NUMBER_OF_BLOCKS,
SCSICmdField1Byte CONTROL );
virtual bool START_STOP_UNIT (
SCSITaskIdentifier request,
SCSICmdField1Bit IMMED,
SCSICmdField4Bit POWER_CONDITIONS,
SCSICmdField1Bit LOEJ,
SCSICmdField1Bit START,
SCSICmdField1Byte CONTROL );
virtual bool SYNCHRONIZE_CACHE (
SCSITaskIdentifier request,
SCSICmdField1Bit IMMED,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte NUMBER_OF_BLOCKS,
SCSICmdField1Byte CONTROL );
bool SYNCHRONIZE_CACHE (
SCSITaskIdentifier request,
SCSICmdField1Bit IMMED,
SCSICmdField1Bit SYNC_NV,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField5Bit GROUP_NUMBER,
SCSICmdField2Byte NUMBER_OF_BLOCKS,
SCSICmdField1Byte CONTROL );
bool SYNCRONIZE_CACHE_16 (
SCSITaskIdentifier request,
SCSICmdField1Bit SYNC_NV,
SCSICmdField1Bit IMMED,
SCSICmdField8Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField4Byte NUMBER_OF_BLOCKS,
SCSICmdField5Bit GROUP_NUMBER,
SCSICmdField1Byte CONTROL );
virtual bool UPDATE_BLOCK (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField1Byte CONTROL );
virtual bool VERIFY_10 (
SCSITaskIdentifier request,
SCSICmdField1Bit DPO,
SCSICmdField1Bit BLKVFY,
SCSICmdField1Bit BYTCHK,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte VERIFICATION_LENGTH,
SCSICmdField1Byte CONTROL );
bool VERIFY_10 (
SCSITaskIdentifier request,
SCSICmdField3Bit VRPROTECT,
SCSICmdField1Bit DPO,
SCSICmdField1Bit BYTCHK,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField5Bit GROUP_NUMBER,
SCSICmdField2Byte VERIFICATION_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool VERIFY_12 (
SCSITaskIdentifier request,
SCSICmdField1Bit DPO,
SCSICmdField1Bit BLKVFY,
SCSICmdField1Bit BYTCHK,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField4Byte VERIFICATION_LENGTH,
SCSICmdField1Byte CONTROL );
bool VERIFY_12 (
SCSITaskIdentifier request,
SCSICmdField3Bit VRPROTECT,
SCSICmdField1Bit DPO,
SCSICmdField1Bit BYTCHK,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField5Bit GROUP_NUMBER,
SCSICmdField4Byte VERIFICATION_LENGTH,
SCSICmdField1Byte CONTROL );
bool VERIFY_16 (
SCSITaskIdentifier request,
SCSICmdField3Bit VRPROTECT,
SCSICmdField1Bit DPO,
SCSICmdField1Bit BYTCHK,
SCSICmdField8Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField4Byte VERIFICATION_LENGTH,
SCSICmdField5Bit GROUP_NUMBER,
SCSICmdField1Byte CONTROL );
virtual bool WRITE_6 (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
UInt32 blockSize,
SCSICmdField2Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField1Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool WRITE_10 (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
UInt32 blockSize,
SCSICmdField1Bit DPO,
SCSICmdField1Bit FUA,
SCSICmdField1Bit EBP,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
bool WRITE_10 (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
UInt32 blockSize,
SCSICmdField3Bit WRPROTECT,
SCSICmdField1Bit DPO,
SCSICmdField1Bit FUA,
SCSICmdField1Bit FUA_NV,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField5Bit GROUP_NUMBER,
SCSICmdField2Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool WRITE_12 (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
UInt32 blockSize,
SCSICmdField1Bit DPO,
SCSICmdField1Bit FUA,
SCSICmdField1Bit EBP,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField4Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
bool WRITE_12 (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
UInt32 blockSize,
SCSICmdField3Bit WRPROTECT,
SCSICmdField1Bit DPO,
SCSICmdField1Bit FUA,
SCSICmdField1Bit FUA_NV,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField5Bit GROUP_NUMBER,
SCSICmdField4Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
bool WRITE_16 (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
UInt32 blockSize,
SCSICmdField3Bit WRPROTECT,
SCSICmdField1Bit DPO,
SCSICmdField1Bit FUA,
SCSICmdField1Bit FUA_NV,
SCSICmdField8Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField4Byte TRANSFER_LENGTH,
SCSICmdField5Bit GROUP_NUMBER,
SCSICmdField1Byte CONTROL );
virtual bool WRITE_AND_VERIFY_10 (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
UInt32 blockSize,
SCSICmdField1Bit DPO,
SCSICmdField1Bit EBP,
SCSICmdField1Bit BYTCHK,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
bool WRITE_AND_VERIFY_10 (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
UInt32 blockSize,
SCSICmdField3Bit WRPROTECT,
SCSICmdField1Bit DPO,
SCSICmdField1Bit BYTCHK,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField5Bit GROUP_NUMBER,
SCSICmdField2Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool WRITE_AND_VERIFY_12 (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
UInt32 blockSize,
SCSICmdField1Bit DPO,
SCSICmdField1Bit EBP,
SCSICmdField1Bit BYTCHK,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField4Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
bool WRITE_AND_VERIFY_12 (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
UInt32 blockSize,
SCSICmdField3Bit WRPROTECT,
SCSICmdField1Bit DPO,
SCSICmdField1Bit BYTCHK,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField4Byte TRANSFER_LENGTH,
SCSICmdField5Bit GROUP_NUMBER,
SCSICmdField1Byte CONTROL );
bool WRITE_AND_VERIFY_16 (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
UInt32 blockSize,
SCSICmdField3Bit WRPROTECT,
SCSICmdField1Bit DPO,
SCSICmdField1Bit BYTCHK,
SCSICmdField8Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField4Byte TRANSFER_LENGTH,
SCSICmdField5Bit GROUP_NUMBER,
SCSICmdField1Byte CONTROL );
virtual bool WRITE_LONG (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
bool WRITE_LONG_16 (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField8Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte TRANSFER_LENGTH,
SCSICmdField1Bit CORRCT,
SCSICmdField1Byte CONTROL );
virtual bool WRITE_SAME (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit PBDATA,
SCSICmdField1Bit LBDATA,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
bool WRITE_SAME (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField3Bit WRPROTECT,
SCSICmdField1Bit PBDATA,
SCSICmdField1Bit LBDATA,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField5Bit GROUP_NUMBER,
SCSICmdField2Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
bool WRITE_SAME_16 (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField3Bit WRPROTECT,
SCSICmdField1Bit PBDATA,
SCSICmdField1Bit LBDATA,
SCSICmdField8Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField4Byte TRANSFER_LENGTH,
SCSICmdField5Bit GROUP_NUMBER,
SCSICmdField1Byte CONTROL );
virtual bool XDREAD (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
bool XDREAD (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit XORPINFO,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField5Bit GROUP_NUMBER,
SCSICmdField2Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool XDWRITE (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit DPO,
SCSICmdField1Bit FUA,
SCSICmdField1Bit DISABLE_WRITE,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
bool XDWRITE (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField3Bit WRPROTECT,
SCSICmdField1Bit DPO,
SCSICmdField1Bit FUA,
SCSICmdField1Bit DISABLE_WRITE,
SCSICmdField1Bit FUA_NV,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField5Bit GROUP_NUMBER,
SCSICmdField2Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool XDWRITE_EXTENDED (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit TABLE_ADDRESS,
SCSICmdField1Bit DPO,
SCSICmdField1Bit FUA,
SCSICmdField1Bit DISABLE_WRITE,
SCSICmdField2Bit PORT_CONTROL,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField4Byte SECONDARY_BLOCK_ADDRESS,
SCSICmdField4Byte TRANSFER_LENGTH,
SCSICmdField1Byte SECONDARY_ADDRESS,
SCSICmdField1Byte CONTROL );
bool XDWRITEREAD_10 (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField3Bit WRPROTECT,
SCSICmdField1Bit DPO,
SCSICmdField1Bit FUA,
SCSICmdField1Bit DISABLE_WRITE,
SCSICmdField1Bit FUA_NV,
SCSICmdField1Bit XORPINFO,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField5Bit GROUP_NUMBER,
SCSICmdField2Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool XPWRITE (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit DPO,
SCSICmdField1Bit FUA,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
bool XPWRITE (
SCSITaskIdentifier request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit DPO,
SCSICmdField1Bit FUA,
SCSICmdField1Bit FUA_NV,
SCSICmdField1Bit XORPINFO,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField5Bit GROUP_NUMBER,
SCSICmdField2Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
OSMetaClassDeclareReservedUsed ( IOSCSIBlockCommandsDevice, 1 );
public:
virtual IOReturn PowerDownHandler ( void * refCon,
UInt32 messageType,
IOService * provider,
void * messageArgument,
vm_size_t argSize );
OSMetaClassDeclareReservedUsed ( IOSCSIBlockCommandsDevice, 2 );
protected:
virtual void SetMediumIcon ( void );
OSMetaClassDeclareReservedUsed ( IOSCSIReducedBlockCommandsDevice, 3 );
protected:
virtual void AsyncReadWriteCompletion ( SCSITaskIdentifier completedTask );
private:
OSMetaClassDeclareReservedUnused ( IOSCSIBlockCommandsDevice, 4 );
OSMetaClassDeclareReservedUnused ( IOSCSIBlockCommandsDevice, 5 );
OSMetaClassDeclareReservedUnused ( IOSCSIBlockCommandsDevice, 6 );
OSMetaClassDeclareReservedUnused ( IOSCSIBlockCommandsDevice, 7 );
OSMetaClassDeclareReservedUnused ( IOSCSIBlockCommandsDevice, 8 );
OSMetaClassDeclareReservedUnused ( IOSCSIBlockCommandsDevice, 9 );
OSMetaClassDeclareReservedUnused ( IOSCSIBlockCommandsDevice, 10 );
OSMetaClassDeclareReservedUnused ( IOSCSIBlockCommandsDevice, 11 );
OSMetaClassDeclareReservedUnused ( IOSCSIBlockCommandsDevice, 12 );
OSMetaClassDeclareReservedUnused ( IOSCSIBlockCommandsDevice, 13 );
OSMetaClassDeclareReservedUnused ( IOSCSIBlockCommandsDevice, 14 );
OSMetaClassDeclareReservedUnused ( IOSCSIBlockCommandsDevice, 15 );
OSMetaClassDeclareReservedUnused ( IOSCSIBlockCommandsDevice, 16 );
};
#endif
#endif