⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tmscsim.h

📁 GNU Mach 微内核源代码, 基于美国卡内基美隆大学的 Mach 研究项目
💻 H
📖 第 1 页 / 共 2 页
字号:
/***********************************************************************;*	File Name : TMSCSIM.H					       *;*		    TEKRAM DC-390(T) PCI SCSI Bus Master Host Adapter  *;*		    Device Driver				       *;***********************************************************************/#ifndef TMSCSIM_H#define TMSCSIM_H#define IRQ_NONE 255typedef unsigned char	UCHAR;typedef unsigned short	USHORT;typedef unsigned long	ULONG;typedef unsigned int	UINT;typedef UCHAR		*PUCHAR;typedef USHORT		*PUSHORT;typedef ULONG		*PULONG;typedef Scsi_Host_Template  *PSHT;typedef struct Scsi_Host    *PSH;typedef Scsi_Device	*PSCSIDEV;typedef Scsi_Cmnd	*PSCSICMD;typedef void		*PVOID;typedef struct scatterlist  *PSGL, SGL;/*;-----------------------------------------------------------------------*/typedef  struct  _SyncMsg{UCHAR		ExtendMsg;UCHAR		ExtMsgLen;UCHAR		SyncXferReq;UCHAR		Period;UCHAR		ReqOffset;} SyncMsg;/*;-----------------------------------------------------------------------*/typedef  struct  _Capacity{ULONG		BlockCount;ULONG		BlockLength;} Capacity;/*;-----------------------------------------------------------------------*/typedef  struct  _SGentry{ULONG		SGXferDataPtr;ULONG		SGXferDataLen;} SGentry;typedef  struct  _SGentry1{ULONG		SGXLen;ULONG		SGXPtr;} SGentry1, *PSGE;#define MAX_ADAPTER_NUM 	4#define MAX_DEVICES		10#define MAX_SG_LIST_BUF 	16#define MAX_CMD_QUEUE		20#define MAX_CMD_PER_LUN 	8#define MAX_SCSI_ID		8#define MAX_SRB_CNT		MAX_CMD_QUEUE+4#define END_SCAN		2#define SEL_TIMEOUT		153	/* 250 ms selection timeout (@ 40 MHz) *//*;-----------------------------------------------------------------------; SCSI Request Block;-----------------------------------------------------------------------*/struct	_SRB{UCHAR		CmdBlock[12];struct _SRB	*pNextSRB;struct _DCB	*pSRBDCB;PSCSICMD	pcmd;PSGL		pSegmentList;ULONG		PhysSRB;ULONG		TotalXferredLen;ULONG		SGPhysAddr;	/*;a segment starting address */ULONG		SGToBeXferLen;	/*; to be xfer length */SGL		Segmentx;	/* make a one entry of S/G list table */PUCHAR		pMsgPtr;USHORT		SRBState;USHORT		Revxx2; 	/* ??? */UCHAR		MsgInBuf[6];UCHAR		MsgOutBuf[6];UCHAR		AdaptStatus;UCHAR		TargetStatus;UCHAR		MsgCnt;UCHAR		EndMessage;UCHAR		TagNumber;UCHAR		SGcount;UCHAR		SGIndex;UCHAR		IORBFlag;	/*;81h-Reset, 2-retry */UCHAR		SRBStatus;UCHAR		RetryCnt;UCHAR		SRBFlag;	/*; b0-AutoReqSense,b6-Read,b7-write */				/*; b4-settimeout,b5-Residual valid */UCHAR		ScsiCmdLen;UCHAR		ScsiPhase;UCHAR		Reserved3[3];	/*;for dword alignment */ULONG		Segment0[2];ULONG		Segment1[2];};typedef  struct  _SRB	 DC390_SRB, *PSRB;/*;-----------------------------------------------------------------------; Device Control Block;-----------------------------------------------------------------------*/struct	_DCB{struct _DCB	*pNextDCB;struct _ACB	*pDCBACB;PSCSICMD	pQIORBhead;PSCSICMD	pQIORBtail;PSCSICMD	AboIORBhead;PSCSICMD	AboIORBtail;USHORT		QIORBCnt;USHORT		AboIORBcnt;PSRB		pWaitingSRB;PSRB		pWaitLast;PSRB		pGoingSRB;PSRB		pGoingLast;PSRB		pActiveSRB;USHORT		GoingSRBCnt;USHORT		WaitSRBCnt;	/* ??? */ULONG		TagMask;USHORT		MaxCommand;USHORT		AdaptIndex;	/*; UnitInfo struc start */USHORT		UnitIndex;	/*; nth Unit on this card */UCHAR		UnitSCSIID;	/*; SCSI Target ID  (SCSI Only) */UCHAR		UnitSCSILUN;	/*; SCSI Log.  Unit (SCSI Only) */UCHAR		IdentifyMsg;UCHAR		CtrlR1;UCHAR		CtrlR3;UCHAR		CtrlR4;UCHAR		InqDataBuf[8];UCHAR		CapacityBuf[8];UCHAR		DevMode;UCHAR		AdpMode;UCHAR		SyncMode;	/*; 0:async mode */UCHAR		NegoPeriod;	/*;for nego. */UCHAR		SyncPeriod;	/*;for reg. */UCHAR		SyncOffset;	/*;for reg. and nego.(low nibble) */UCHAR		UnitCtrlFlag;UCHAR		DCBFlag;UCHAR		DevType;UCHAR		Reserved2[3];	/*;for dword alignment */};typedef  struct  _DCB	 DC390_DCB, *PDCB;/*;-----------------------------------------------------------------------; Adapter Control Block;-----------------------------------------------------------------------*/struct	_ACB{ULONG		PhysACB;PSH		pScsiHost;struct _ACB	*pNextACB;USHORT		IOPortBase;USHORT		Revxx1; 	/* ??? */PDCB		pLinkDCB;PDCB		pDCBRunRobin;PDCB		pActiveDCB;PDCB		pDCB_free;PSRB		pFreeSRB;PSRB		pTmpSRB;USHORT		SRBCount;USHORT		AdapterIndex;	/*; nth Adapter this driver */USHORT		max_id;USHORT		max_lun;UCHAR		msgin123[4];UCHAR		status;UCHAR		AdaptSCSIID;	/*; Adapter SCSI Target ID */UCHAR		AdaptSCSILUN;	/*; Adapter SCSI LUN */UCHAR		DeviceCnt;UCHAR		IRQLevel;UCHAR		TagMaxNum;UCHAR		ACBFlag;UCHAR		Gmode2;UCHAR		LUNchk;UCHAR		scan_devices;UCHAR		HostID_Bit;UCHAR		Reserved1[1];	/*;for dword alignment */UCHAR		DCBmap[MAX_SCSI_ID];DC390_DCB	DCB_array[MAX_DEVICES]; 	/* +74h,  Len=3E8 */DC390_SRB	SRB_array[MAX_SRB_CNT]; 	/* +45Ch, Len=	*/DC390_SRB	TmpSRB;};typedef  struct  _ACB	 DC390_ACB, *PACB;/*;-----------------------------------------------------------------------*/#define BIT31	0x80000000#define BIT30	0x40000000#define BIT29	0x20000000#define BIT28	0x10000000#define BIT27	0x08000000#define BIT26	0x04000000#define BIT25	0x02000000#define BIT24	0x01000000#define BIT23	0x00800000#define BIT22	0x00400000#define BIT21	0x00200000#define BIT20	0x00100000#define BIT19	0x00080000#define BIT18	0x00040000#define BIT17	0x00020000#define BIT16	0x00010000#define BIT15	0x00008000#define BIT14	0x00004000#define BIT13	0x00002000#define BIT12	0x00001000#define BIT11	0x00000800#define BIT10	0x00000400#define BIT9	0x00000200#define BIT8	0x00000100#define BIT7	0x00000080#define BIT6	0x00000040#define BIT5	0x00000020#define BIT4	0x00000010#define BIT3	0x00000008#define BIT2	0x00000004#define BIT1	0x00000002#define BIT0	0x00000001/*;---UnitCtrlFlag */#define UNIT_ALLOCATED	BIT0#define UNIT_INFO_CHANGED BIT1#define FORMATING_MEDIA BIT2#define UNIT_RETRY	BIT3/*;---UnitFlags */#define DASD_SUPPORT	BIT0#define SCSI_SUPPORT	BIT1#define ASPI_SUPPORT	BIT2/*;----SRBState machine definition */#define SRB_FREE	0#define SRB_WAIT	BIT0#define SRB_READY	BIT1#define SRB_MSGOUT	BIT2	/*;arbitration+msg_out 1st byte*/#define SRB_MSGIN	BIT3#define SRB_MSGIN_MULTI BIT4#define SRB_COMMAND	BIT5#define SRB_START_	BIT6	/*;arbitration+msg_out+command_out*/#define SRB_DISCONNECT	BIT7#define SRB_DATA_XFER	BIT8#define SRB_XFERPAD	BIT9#define SRB_STATUS	BIT10#define SRB_COMPLETED	BIT11#define SRB_ABORT_SENT	BIT12#define DO_SYNC_NEGO	BIT13#define SRB_UNEXPECT_RESEL BIT14/*;---ACBFlag */#define RESET_DEV	BIT0#define RESET_DETECT	BIT1#define RESET_DONE	BIT2/*;---DCBFlag */#define ABORT_DEV_	BIT0/*;---SRBstatus */#define SRB_OK		BIT0#define ABORTION	BIT1#define OVER_RUN	BIT2#define UNDER_RUN	BIT3#define PARITY_ERROR	BIT4#define SRB_ERROR	BIT5/*;---SRBFlag */#define DATAOUT 	BIT7#define DATAIN		BIT6#define RESIDUAL_VALID	BIT5#define ENABLE_TIMER	BIT4#define RESET_DEV0	BIT2#define ABORT_DEV	BIT1#define AUTO_REQSENSE	BIT0/*;---Adapter status */#define H_STATUS_GOOD	 0#define H_SEL_TIMEOUT	 0x11#define H_OVER_UNDER_RUN 0x12#define H_UNEXP_BUS_FREE 0x13#define H_TARGET_PHASE_F 0x14#define H_INVALID_CCB_OP 0x16#define H_LINK_CCB_BAD	 0x17#define H_BAD_TARGET_DIR 0x18#define H_DUPLICATE_CCB  0x19#define H_BAD_CCB_OR_SG  0x1A#define H_ABORT 	 0x0FF/*; SCSI Status byte codes*/#define SCSI_STAT_GOOD		0x0	/*;  Good status */#define SCSI_STAT_CHECKCOND	0x02	/*;  SCSI Check Condition */#define SCSI_STAT_CONDMET	0x04	/*;  Condition Met */#define SCSI_STAT_BUSY		0x08	/*;  Target busy status */#define SCSI_STAT_INTER 	0x10	/*;  Intermediate status */#define SCSI_STAT_INTERCONDMET	0x14	/*;  Intermediate condition met */#define SCSI_STAT_RESCONFLICT	0x18	/*;  Reservation conflict */#define SCSI_STAT_CMDTERM	0x22	/*;  Command Terminated */#define SCSI_STAT_QUEUEFULL	0x28	/*;  Queue Full */#define SCSI_STAT_UNEXP_BUS_F	0xFD	/*;  Unexpect Bus Free */#define SCSI_STAT_BUS_RST_DETECT 0xFE	/*;  Scsi Bus Reset detected */#define SCSI_STAT_SEL_TIMEOUT	0xFF	/*;  Selection Time out *//*;---Sync_Mode */#define SYNC_DISABLE	0#define SYNC_ENABLE	BIT0#define SYNC_NEGO_DONE	BIT1#define WIDE_ENABLE	BIT2#define WIDE_NEGO_DONE	BIT3#define EN_TAG_QUEUING	BIT4#define EN_ATN_STOP	BIT5

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -