SCSIBlockCommands.h [plain text]
#ifndef _IOKIT_SCSI_BLOCK_COMMANDS_H_
#define _IOKIT_SCSI_BLOCK_COMMANDS_H_
#if defined(KERNEL) && defined(__cplusplus)
#include <IOKit/IOLib.h>
#include <IOKit/IOService.h>
#include "SCSIPrimaryCommands.h"
#include <IOKit/scsi/SCSICommandDefinitions.h>
#define SEARCH_DATA_PARAMETER_LIST_MIN_LENGTH 20
class SCSIBlockCommands : public SCSIPrimaryCommands
{
OSDeclareDefaultStructors ( SCSIBlockCommands )
public:
static SCSIBlockCommands * CreateSCSIBlockCommandObject ( void );
virtual bool ERASE_10 (
SCSITask * request,
SCSICmdField1Bit ERA,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool ERASE_12 (
SCSITask * request,
SCSICmdField1Bit ERA,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField4Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool FORMAT_UNIT (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
IOByteCount defectListSize,
SCSICmdField1Bit FMTDATA,
SCSICmdField1Bit CMPLST,
SCSICmdField3Bit DEFECT_LIST_FORMAT,
SCSICmdField1Byte VENDOR_SPECIFIC,
SCSICmdField2Byte INTERLEAVE,
SCSICmdField1Byte CONTROL );
virtual bool LOCK_UNLOCK_CACHE (
SCSITask * request,
SCSICmdField1Bit LOCK,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte NUMBER_OF_BLOCKS,
SCSICmdField1Byte CONTROL );
virtual bool MEDIUM_SCAN (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit WBS,
SCSICmdField1Bit ASA,
SCSICmdField1Bit RSD,
SCSICmdField1Bit PRA,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte PARAMETER_LIST_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool PREFETCH (
SCSITask * request,
SCSICmdField1Bit IMMED,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool READ_6 (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
UInt64 transferCount,
SCSICmdField21Bit LOGICAL_BLOCK_ADDRESS,
SCSICmdField1Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool READ_10 (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
UInt64 transferCount,
SCSICmdField1Bit DPO,
SCSICmdField1Bit FUA,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool READ_12 (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
UInt64 transferCount,
SCSICmdField1Bit DPO,
SCSICmdField1Bit FUA,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField4Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool READ_CAPACITY (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField1Bit PMI,
SCSICmdField1Byte CONTROL );
virtual bool READ_DEFECT_DATA_10 (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit PLIST,
SCSICmdField1Bit GLIST,
SCSICmdField3Bit DEFECT_LIST_FORMAT,
SCSICmdField2Byte ALLOCATION_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool READ_DEFECT_DATA_12 (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit PLIST,
SCSICmdField1Bit GLIST,
SCSICmdField3Bit DEFECT_LIST_FORMAT,
SCSICmdField4Byte ALLOCATION_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool READ_GENERATION (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField1Byte ALLOCATION_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool READ_LONG (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit CORRCT,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte BYTE_TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool READ_UPDATED_BLOCK_10 (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
UInt32 transferCount,
SCSICmdField1Bit DPO,
SCSICmdField1Bit FUA,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField1Bit LATEST,
SCSICmdField15Bit GENERATION_ADDRESS,
SCSICmdField1Byte CONTROL );
virtual bool REASSIGN_BLOCKS (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Byte CONTROL );
virtual bool REBUILD (
SCSITask * 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 (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit DPO,
SCSICmdField1Bit FUA,
SCSICmdField1Bit INTDATA,
SCSICmdField2Bit PORT_CONTROL,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField4Byte REGENERATE_LENGTH,
SCSICmdField4Byte PARAMETER_LIST_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool REZERO_UNIT (
SCSITask * request,
SCSICmdField1Byte CONTROL );
virtual bool SEARCH_DATA_EQUAL_10 (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
UInt32 transferCount,
SCSICmdField1Bit INVERT,
SCSICmdField1Bit SPNDAT,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte NUMBER_OF_BLOCKS_TO_SEARCH,
SCSICmdField1Byte CONTROL );
virtual bool SEARCH_DATA_HIGH_10 (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
UInt32 transferCount,
SCSICmdField1Bit INVERT,
SCSICmdField1Bit SPNDAT,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte NUMBER_OF_BLOCKS_TO_SEARCH,
SCSICmdField1Byte CONTROL );
virtual bool SEARCH_DATA_LOW_10 (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
UInt32 transferCount,
SCSICmdField1Bit INVERT,
SCSICmdField1Bit SPNDAT,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte NUMBER_OF_BLOCKS_TO_SEARCH,
SCSICmdField1Byte CONTROL );
virtual bool SEEK_6 (
SCSITask * request,
SCSICmdField21Bit LOGICAL_BLOCK_ADDRESS,
SCSICmdField1Byte CONTROL );
virtual bool SEEK_10 (
SCSITask * request,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField1Byte CONTROL );
virtual bool SET_LIMITS_10 (
SCSITask * request,
SCSICmdField1Bit RDINH,
SCSICmdField1Bit WRINH,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte NUMBER_OF_BLOCKS,
SCSICmdField1Byte CONTROL );
virtual bool SET_LIMITS_12 (
SCSITask * request,
SCSICmdField1Bit RDINH,
SCSICmdField1Bit WRINH,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField4Byte NUMBER_OF_BLOCKS,
SCSICmdField1Byte CONTROL );
virtual bool START_STOP_UNIT (
SCSITask * request,
SCSICmdField1Bit IMMED,
SCSICmdField4Bit POWER_CONDITIONS,
SCSICmdField1Bit LOEJ,
SCSICmdField1Bit START,
SCSICmdField1Byte CONTROL );
virtual bool SYNCHRONIZE_CACHE (
SCSITask * request,
SCSICmdField1Bit IMMED,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte NUMBER_OF_BLOCKS,
SCSICmdField1Byte CONTROL );
virtual bool UPDATE_BLOCK (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
UInt64 transferCount,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField1Byte CONTROL );
virtual bool VERIFY_10 (
SCSITask * request,
SCSICmdField1Bit DPO,
SCSICmdField1Bit BLKVFY,
SCSICmdField1Bit BYTCHK,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte VERIFICATION_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool VERIFY_12 (
SCSITask * request,
SCSICmdField1Bit DPO,
SCSICmdField1Bit BLKVFY,
SCSICmdField1Bit BYTCHK,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField4Byte VERIFICATION_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool WRITE_6 (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
UInt64 transferCount,
SCSICmdField21Bit LOGICAL_BLOCK_ADDRESS,
SCSICmdField1Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool WRITE_10 (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
UInt64 transferCount,
SCSICmdField1Bit DPO,
SCSICmdField1Bit FUA,
SCSICmdField1Bit EBP,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool WRITE_12 (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
UInt64 transferCount,
SCSICmdField1Bit DPO,
SCSICmdField1Bit FUA,
SCSICmdField1Bit EBP,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField4Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool WRITE_AND_VERIFY_10 (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
UInt64 transferCount,
SCSICmdField1Bit DPO,
SCSICmdField1Bit EBP,
SCSICmdField1Bit BYTCHK,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool WRITE_AND_VERIFY_12 (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
UInt64 transferCount,
SCSICmdField1Bit DPO,
SCSICmdField1Bit EBP,
SCSICmdField1Bit BYTCHK,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField4Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool WRITE_LONG (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool WRITE_SAME (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit PBDATA,
SCSICmdField1Bit LBDATA,
SCSICmdField1Bit RELADR,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool XDREAD (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool XDWRITE (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit DPO,
SCSICmdField1Bit FUA,
SCSICmdField1Bit DISABLE_WRITE,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
virtual bool XDWRITE_EXTENDED (
SCSITask * 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 );
virtual bool XPWRITE (
SCSITask * request,
IOMemoryDescriptor * dataBuffer,
SCSICmdField1Bit DPO,
SCSICmdField1Bit FUA,
SCSICmdField4Byte LOGICAL_BLOCK_ADDRESS,
SCSICmdField2Byte TRANSFER_LENGTH,
SCSICmdField1Byte CONTROL );
};
#endif
#endif