SCSIParallelTarget.h [plain text]
#ifndef _SCSIPARALLELTARGET_H
#define _SCSIPARALLELTARGET_H
#include <IOKit/IOTypes.h>
#include <libkern/c++/OSNumber.h>
#include <IOKit/IOLocks.h>
typedef struct SCSINegotiationResults
{
IOReturn returnCode;
UInt32 transferPeriodpS;
UInt32 transferOffset;
UInt32 transferWidth;
UInt32 transferOptions;
} SCSINegotiationResults;
typedef struct SCSITarget
{
queue_head_t deviceList;
UInt32 commandCount;
UInt32 commandLimit;
UInt32 commandLimitSave;
IORWLock * clientSem;
IORWLock * targetSem;
UInt32 *tagArray;
UInt32 negotiateState;
SCSINegotiationResults negotiationResult;
UInt32 state;
SCSITargetParms targetParmsCurrent;
SCSITargetParms targetParmsNew;
OSNumber *regObjTransferPeriod;
OSNumber *regObjTransferOffset;
OSNumber *regObjTransferWidth;
OSNumber *regObjTransferOptions;
OSNumber *regObjCmdQueue;
UInt32 reqSenseCount;
UInt32 reqSenseState;
void *targetPrivateData;
bool targetAllocated;
} SCSITarget;
enum
{
kStateIdle,
kStateIssue,
kStatePending,
kStateActive
};
enum _cdbFlagsInternal
{
kCDBFlagsEnableTagQueuing = 0x80000000
};
enum SCSICommandType
{
kSCSICommandNone = 0,
kSCSICommandExecute,
kSCSICommandReqSense,
kSCSICommandAbort,
kSCSICommandAbortAll,
kSCSICommandDeviceReset,
kSCSICommandBusReset,
kSCSICommandCancel
};
#endif