SCSIParallelController.h [plain text]
#ifndef _SCSIPARALLELCONTROLLER_H
#define _SCSIPARALLELCONTROLLER_H
class IOSyncer;
typedef struct SCSIControllerInfo
{
UInt32 initiatorId;
UInt32 maxTargetsSupported;
UInt32 maxLunsSupported;
UInt32 minTransferPeriodpS;
UInt32 maxTransferOffset;
UInt32 maxTransferWidth;
UInt32 maxCommandsPerController;
UInt32 maxCommandsPerTarget;
UInt32 maxCommandsPerLun;
UInt32 tagAllocationMethod;
UInt32 maxTags;
UInt32 targetPrivateDataSize;
UInt32 lunPrivateDataSize;
UInt32 commandPrivateDataSize;
bool disableCancelCommands;
UInt32 reserved[64];
} SCSIControllerInfo;
enum SCSITagAllocation
{
kTagAllocationNone = 0,
kTagAllocationPerLun,
kTagAllocationPerTarget,
kTagAllocationPerController
};
enum WorkLoopReqType
{
kWorkLoopInitTarget = 1,
kWorkLoopReleaseTarget,
kWorkLoopInitDevice,
kWorkLoopReleaseDevice
};
enum DispatchAction
{
kDispatchNextCommand = 1,
kDispatchNextLun,
kDispatchNextTarget,
kDispatchStop
};
typedef struct WorkLoopRequest
{
WorkLoopReqType type;
IOSyncer * sync;
bool rc;
} WorkLoopRequest;
#endif