IOSCSIPeripheralDeviceNub.h [plain text]
#ifndef _IOKIT_IO_SCSI_PERIPHERAL_DEVICE_NUB_H_
#define _IOKIT_IO_SCSI_PERIPHERAL_DEVICE_NUB_H_
enum
{
kPeripheralDeviceTypeNoMatch = 0,
kDefaultProbeRanking = 5000,
kFirstOrderRanking = 10000,
kSecondOrderRanking = 15000,
kThirdOrderRanking = 20000
};
#if defined(KERNEL) && defined(__cplusplus)
#include <IOKit/IOLib.h>
#include <IOKit/IOService.h>
#include <IOKit/IOSyncer.h>
#include <IOKit/scsi-commands/IOSCSIProtocolServices.h>
#include <IOKit/scsi-commands/SCSIPrimaryCommands.h>
class IOSCSIPeripheralDeviceNub : public IOSCSIProtocolServices
{
OSDeclareDefaultStructors ( IOSCSIPeripheralDeviceNub )
private:
static bool sCompareIOProperty( IOService * object,
OSDictionary * table,
char * propertyKeyName,
bool * matches );
static void TaskCallback( SCSITaskIdentifier completedTask );
SCSIServiceResponse SendTask( SCSITask *request );
public:
bool InterrogateDevice( void );
protected:
struct IOSCSIPeripheralDeviceNubExpansionData { };
IOSCSIPeripheralDeviceNubExpansionData *fIOSCSIPeripheralDeviceNubReserved;
IOSCSIProtocolServices * fProvider;
SCSIPrimaryCommands * fSCSIPrimaryCommandObject;
UInt8 fDefaultInquiryCount;
virtual bool SendSCSICommand( SCSITaskIdentifier request,
SCSIServiceResponse * serviceResponse,
SCSITaskStatus * taskStatus );
virtual SCSIServiceResponse AbortSCSICommand( SCSITaskIdentifier request );
virtual bool IsProtocolServiceSupported( SCSIProtocolFeature feature, void * serviceValue );
virtual bool HandleProtocolServiceFeature( SCSIProtocolFeature feature, void * serviceValue );
virtual void InitializePowerManagement ( IOService * provider );
public:
bool init ( OSDictionary * propTable );
virtual bool start ( IOService * provider );
virtual void stop ( IOService * provider );
virtual IOReturn message ( UInt32 type, IOService * nub, void * arg );
virtual void joinPMtree ( IOService * driver );
virtual bool matchPropertyTable ( OSDictionary * table,
SInt32 * score );
virtual void ExecuteCommand ( SCSITaskIdentifier request );
virtual SCSIServiceResponse AbortCommand ( SCSITaskIdentifier abortTask );
private:
OSMetaClassDeclareReservedUnused( IOSCSIPeripheralDeviceNub, 1 );
OSMetaClassDeclareReservedUnused( IOSCSIPeripheralDeviceNub, 2 );
OSMetaClassDeclareReservedUnused( IOSCSIPeripheralDeviceNub, 3 );
OSMetaClassDeclareReservedUnused( IOSCSIPeripheralDeviceNub, 4 );
OSMetaClassDeclareReservedUnused( IOSCSIPeripheralDeviceNub, 5 );
OSMetaClassDeclareReservedUnused( IOSCSIPeripheralDeviceNub, 6 );
OSMetaClassDeclareReservedUnused( IOSCSIPeripheralDeviceNub, 7 );
OSMetaClassDeclareReservedUnused( IOSCSIPeripheralDeviceNub, 8 );
OSMetaClassDeclareReservedUnused( IOSCSIPeripheralDeviceNub, 9 );
OSMetaClassDeclareReservedUnused( IOSCSIPeripheralDeviceNub, 10 );
OSMetaClassDeclareReservedUnused( IOSCSIPeripheralDeviceNub, 11 );
OSMetaClassDeclareReservedUnused( IOSCSIPeripheralDeviceNub, 12 );
OSMetaClassDeclareReservedUnused( IOSCSIPeripheralDeviceNub, 13 );
OSMetaClassDeclareReservedUnused( IOSCSIPeripheralDeviceNub, 14 );
OSMetaClassDeclareReservedUnused( IOSCSIPeripheralDeviceNub, 15 );
OSMetaClassDeclareReservedUnused( IOSCSIPeripheralDeviceNub, 16 );
};
class IOSCSILogicalUnitNub : public IOSCSIPeripheralDeviceNub
{
OSDeclareDefaultStructors ( IOSCSILogicalUnitNub )
private:
UInt8 fLogicalUnitNumber;
protected:
struct IOSCSILogicalUnitNubExpansionData { };
IOSCSILogicalUnitNubExpansionData *fIOSCSILogicalUnitNubReserved;
public:
virtual bool start ( IOService * provider );
virtual void SetLogicalUnitNumber( UInt8 newLUN );
virtual void ExecuteCommand ( SCSITaskIdentifier request );
virtual SCSIServiceResponse AbortCommand ( SCSITaskIdentifier abortTask );
private:
OSMetaClassDeclareReservedUnused( IOSCSILogicalUnitNub, 1 );
OSMetaClassDeclareReservedUnused( IOSCSILogicalUnitNub, 2 );
OSMetaClassDeclareReservedUnused( IOSCSILogicalUnitNub, 3 );
OSMetaClassDeclareReservedUnused( IOSCSILogicalUnitNub, 4 );
OSMetaClassDeclareReservedUnused( IOSCSILogicalUnitNub, 5 );
OSMetaClassDeclareReservedUnused( IOSCSILogicalUnitNub, 6 );
OSMetaClassDeclareReservedUnused( IOSCSILogicalUnitNub, 7 );
OSMetaClassDeclareReservedUnused( IOSCSILogicalUnitNub, 8 );
OSMetaClassDeclareReservedUnused( IOSCSILogicalUnitNub, 9 );
OSMetaClassDeclareReservedUnused( IOSCSILogicalUnitNub, 10 );
OSMetaClassDeclareReservedUnused( IOSCSILogicalUnitNub, 11 );
OSMetaClassDeclareReservedUnused( IOSCSILogicalUnitNub, 12 );
OSMetaClassDeclareReservedUnused( IOSCSILogicalUnitNub, 13 );
OSMetaClassDeclareReservedUnused( IOSCSILogicalUnitNub, 14 );
OSMetaClassDeclareReservedUnused( IOSCSILogicalUnitNub, 15 );
OSMetaClassDeclareReservedUnused( IOSCSILogicalUnitNub, 16 );
};
#endif
#endif