📄 advansys.c
字号:
#define SCSICMD_ReadLong 0x3E#define SCSICMD_WriteLong 0x3F#define SCSICMD_ReadTOC 0x43#define SCSICMD_ReadHeader 0x44#define SCSICMD_ModeSelect10 0x55#define SCSICMD_ModeSense10 0x5A#define SCSI_TYPE_DASD 0x00#define SCSI_TYPE_SASD 0x01#define SCSI_TYPE_PRN 0x02#define SCSI_TYPE_PROC 0x03#define SCSI_TYPE_WORM 0x04#define SCSI_TYPE_CDROM 0x05#define SCSI_TYPE_SCANNER 0x06#define SCSI_TYPE_OPTMEM 0x07#define SCSI_TYPE_MED_CHG 0x08#define SCSI_TYPE_COMM 0x09#define SCSI_TYPE_UNKNOWN 0x1F#define SCSI_TYPE_NO_DVC 0xFF#define INQ_CLOCKING_ST_ONLY 0x0#define INQ_CLOCKING_DT_ONLY 0x1#define INQ_CLOCKING_ST_AND_DT 0x3#define ASC_SCSIDIR_NOCHK 0x00#define ASC_SCSIDIR_T2H 0x08#define ASC_SCSIDIR_H2T 0x10#define ASC_SCSIDIR_NODATA 0x18#define SCSI_SENKEY_NO_SENSE 0x00#define SCSI_SENKEY_UNDEFINED 0x01#define SCSI_SENKEY_NOT_READY 0x02#define SCSI_SENKEY_MEDIUM_ERR 0x03#define SCSI_SENKEY_HW_ERR 0x04#define SCSI_SENKEY_ILLEGAL 0x05#define SCSI_SENKEY_ATTENTION 0x06#define SCSI_SENKEY_PROTECTED 0x07#define SCSI_SENKEY_BLANK 0x08#define SCSI_SENKEY_V_UNIQUE 0x09#define SCSI_SENKEY_CPY_ABORT 0x0A#define SCSI_SENKEY_ABORT 0x0B#define SCSI_SENKEY_EQUAL 0x0C#define SCSI_SENKEY_VOL_OVERFLOW 0x0D#define SCSI_SENKEY_MISCOMP 0x0E#define SCSI_SENKEY_RESERVED 0x0F#define SCSI_ASC_NOMEDIA 0x3A#define ASC_SRB_HOST(x) ((uchar)((uchar)(x) >> 4))#define ASC_SRB_TID(x) ((uchar)((uchar)(x) & (uchar)0x0F))#define ASC_SRB_LUN(x) ((uchar)((uint)(x) >> 13))#define PUT_CDB1(x) ((uchar)((uint)(x) >> 8))#define SS_GOOD 0x00#define SS_CHK_CONDITION 0x02#define SS_CONDITION_MET 0x04#define SS_TARGET_BUSY 0x08#define SS_INTERMID 0x10#define SS_INTERMID_COND_MET 0x14#define SS_RSERV_CONFLICT 0x18#define SS_CMD_TERMINATED 0x22#define SS_QUEUE_FULL 0x28#define MS_CMD_DONE 0x00#define MS_EXTEND 0x01#define MS_SDTR_LEN 0x03#define MS_SDTR_CODE 0x01#define MS_WDTR_LEN 0x02#define MS_WDTR_CODE 0x03#define MS_MDP_LEN 0x05#define MS_MDP_CODE 0x00#define M1_SAVE_DATA_PTR 0x02#define M1_RESTORE_PTRS 0x03#define M1_DISCONNECT 0x04#define M1_INIT_DETECTED_ERR 0x05#define M1_ABORT 0x06#define M1_MSG_REJECT 0x07#define M1_NO_OP 0x08#define M1_MSG_PARITY_ERR 0x09#define M1_LINK_CMD_DONE 0x0A#define M1_LINK_CMD_DONE_WFLAG 0x0B#define M1_BUS_DVC_RESET 0x0C#define M1_ABORT_TAG 0x0D#define M1_CLR_QUEUE 0x0E#define M1_INIT_RECOVERY 0x0F#define M1_RELEASE_RECOVERY 0x10#define M1_KILL_IO_PROC 0x11#define M2_QTAG_MSG_SIMPLE 0x20#define M2_QTAG_MSG_HEAD 0x21#define M2_QTAG_MSG_ORDERED 0x22#define M2_IGNORE_WIDE_RESIDUE 0x23typedef struct { uchar peri_dvc_type:5; uchar peri_qualifier:3;} ASC_SCSI_INQ0;typedef struct { uchar dvc_type_modifier:7; uchar rmb:1;} ASC_SCSI_INQ1;typedef struct { uchar ansi_apr_ver:3; uchar ecma_ver:3; uchar iso_ver:2;} ASC_SCSI_INQ2;typedef struct { uchar rsp_data_fmt:4; uchar res:2; uchar TemIOP:1; uchar aenc:1;} ASC_SCSI_INQ3;typedef struct { uchar StfRe:1; uchar CmdQue:1; uchar Reserved:1; uchar Linked:1; uchar Sync:1; uchar WBus16:1; uchar WBus32:1; uchar RelAdr:1;} ASC_SCSI_INQ7;typedef struct { ASC_SCSI_INQ0 byte0; ASC_SCSI_INQ1 byte1; ASC_SCSI_INQ2 byte2; ASC_SCSI_INQ3 byte3; uchar add_len; uchar res1; uchar res2; ASC_SCSI_INQ7 byte7; uchar vendor_id[8]; uchar product_id[16]; uchar product_rev_level[4];} ASC_SCSI_INQUIRY;typedef struct asc_req_sense { uchar err_code:7; uchar info_valid:1; uchar segment_no; uchar sense_key:4; uchar reserved_bit:1; uchar sense_ILI:1; uchar sense_EOM:1; uchar file_mark:1; uchar info1[4]; uchar add_sense_len; uchar cmd_sp_info[4]; uchar asc; uchar ascq; uchar fruc; uchar sks_byte0:7; uchar sks_valid:1; uchar sks_bytes[2]; uchar notused[2]; uchar ex_sense_code; uchar info2[4];} ASC_REQ_SENSE;#define ASC_SG_LIST_PER_Q 7#define QS_FREE 0x00#define QS_READY 0x01#define QS_DISC1 0x02#define QS_DISC2 0x04#define QS_BUSY 0x08#define QS_ABORTED 0x40#define QS_DONE 0x80#define QC_NO_CALLBACK 0x01#define QC_SG_SWAP_QUEUE 0x02#define QC_SG_HEAD 0x04#define QC_DATA_IN 0x08#define QC_DATA_OUT 0x10#define QC_URGENT 0x20#define QC_MSG_OUT 0x40#define QC_REQ_SENSE 0x80#define QCSG_SG_XFER_LIST 0x02#define QCSG_SG_XFER_MORE 0x04#define QCSG_SG_XFER_END 0x08#define QD_IN_PROGRESS 0x00#define QD_NO_ERROR 0x01#define QD_ABORTED_BY_HOST 0x02#define QD_WITH_ERROR 0x04#define QD_INVALID_REQUEST 0x80#define QD_INVALID_HOST_NUM 0x81#define QD_INVALID_DEVICE 0x82#define QD_ERR_INTERNAL 0xFF#define QHSTA_NO_ERROR 0x00#define QHSTA_M_SEL_TIMEOUT 0x11#define QHSTA_M_DATA_OVER_RUN 0x12#define QHSTA_M_DATA_UNDER_RUN 0x12#define QHSTA_M_UNEXPECTED_BUS_FREE 0x13#define QHSTA_M_BAD_BUS_PHASE_SEQ 0x14#define QHSTA_D_QDONE_SG_LIST_CORRUPTED 0x21#define QHSTA_D_ASC_DVC_ERROR_CODE_SET 0x22#define QHSTA_D_HOST_ABORT_FAILED 0x23#define QHSTA_D_EXE_SCSI_Q_FAILED 0x24#define QHSTA_D_EXE_SCSI_Q_BUSY_TIMEOUT 0x25#define QHSTA_D_ASPI_NO_BUF_POOL 0x26#define QHSTA_M_WTM_TIMEOUT 0x41#define QHSTA_M_BAD_CMPL_STATUS_IN 0x42#define QHSTA_M_NO_AUTO_REQ_SENSE 0x43#define QHSTA_M_AUTO_REQ_SENSE_FAIL 0x44#define QHSTA_M_TARGET_STATUS_BUSY 0x45#define QHSTA_M_BAD_TAG_CODE 0x46#define QHSTA_M_BAD_QUEUE_FULL_OR_BUSY 0x47#define QHSTA_M_HUNG_REQ_SCSI_BUS_RESET 0x48#define QHSTA_D_LRAM_CMP_ERROR 0x81#define QHSTA_M_MICRO_CODE_ERROR_HALT 0xA1#define ASC_FLAG_SCSIQ_REQ 0x01#define ASC_FLAG_BIOS_SCSIQ_REQ 0x02#define ASC_FLAG_BIOS_ASYNC_IO 0x04#define ASC_FLAG_SRB_LINEAR_ADDR 0x08#define ASC_FLAG_WIN16 0x10#define ASC_FLAG_WIN32 0x20#define ASC_FLAG_ISA_OVER_16MB 0x40#define ASC_FLAG_DOS_VM_CALLBACK 0x80#define ASC_TAG_FLAG_EXTRA_BYTES 0x10#define ASC_TAG_FLAG_DISABLE_DISCONNECT 0x04#define ASC_TAG_FLAG_DISABLE_ASYN_USE_SYN_FIX 0x08#define ASC_TAG_FLAG_DISABLE_CHK_COND_INT_HOST 0x40#define ASC_SCSIQ_CPY_BEG 4#define ASC_SCSIQ_SGHD_CPY_BEG 2#define ASC_SCSIQ_B_FWD 0#define ASC_SCSIQ_B_BWD 1#define ASC_SCSIQ_B_STATUS 2#define ASC_SCSIQ_B_QNO 3#define ASC_SCSIQ_B_CNTL 4#define ASC_SCSIQ_B_SG_QUEUE_CNT 5#define ASC_SCSIQ_D_DATA_ADDR 8#define ASC_SCSIQ_D_DATA_CNT 12#define ASC_SCSIQ_B_SENSE_LEN 20#define ASC_SCSIQ_DONE_INFO_BEG 22#define ASC_SCSIQ_D_SRBPTR 22#define ASC_SCSIQ_B_TARGET_IX 26#define ASC_SCSIQ_B_CDB_LEN 28#define ASC_SCSIQ_B_TAG_CODE 29#define ASC_SCSIQ_W_VM_ID 30#define ASC_SCSIQ_DONE_STATUS 32#define ASC_SCSIQ_HOST_STATUS 33#define ASC_SCSIQ_SCSI_STATUS 34#define ASC_SCSIQ_CDB_BEG 36#define ASC_SCSIQ_DW_REMAIN_XFER_ADDR 56#define ASC_SCSIQ_DW_REMAIN_XFER_CNT 60#define ASC_SCSIQ_B_FIRST_SG_WK_QP 48#define ASC_SCSIQ_B_SG_WK_QP 49#define ASC_SCSIQ_B_SG_WK_IX 50#define ASC_SCSIQ_W_ALT_DC1 52#define ASC_SCSIQ_B_LIST_CNT 6#define ASC_SCSIQ_B_CUR_LIST_CNT 7#define ASC_SGQ_B_SG_CNTL 4#define ASC_SGQ_B_SG_HEAD_QP 5#define ASC_SGQ_B_SG_LIST_CNT 6#define ASC_SGQ_B_SG_CUR_LIST_CNT 7#define ASC_SGQ_LIST_BEG 8#define ASC_DEF_SCSI1_QNG 4#define ASC_MAX_SCSI1_QNG 4#define ASC_DEF_SCSI2_QNG 16#define ASC_MAX_SCSI2_QNG 32#define ASC_TAG_CODE_MASK 0x23#define ASC_STOP_REQ_RISC_STOP 0x01#define ASC_STOP_ACK_RISC_STOP 0x03#define ASC_STOP_CLEAN_UP_BUSY_Q 0x10#define ASC_STOP_CLEAN_UP_DISC_Q 0x20#define ASC_STOP_HOST_REQ_RISC_HALT 0x40#define ASC_TIDLUN_TO_IX(tid, lun) (ASC_SCSI_TIX_TYPE)((tid) + ((lun)<<ASC_SCSI_ID_BITS))#define ASC_TID_TO_TARGET_ID(tid) (ASC_SCSI_BIT_ID_TYPE)(0x01 << (tid))#define ASC_TIX_TO_TARGET_ID(tix) (0x01 << ((tix) & ASC_MAX_TID))#define ASC_TIX_TO_TID(tix) ((tix) & ASC_MAX_TID)#define ASC_TID_TO_TIX(tid) ((tid) & ASC_MAX_TID)#define ASC_TIX_TO_LUN(tix) (((tix) >> ASC_SCSI_ID_BITS) & ASC_MAX_LUN)#define ASC_QNO_TO_QADDR(q_no) ((ASC_QADR_BEG)+((int)(q_no) << 6))typedef struct asc_scisq_1 { uchar status; uchar q_no; uchar cntl; uchar sg_queue_cnt; uchar target_id; uchar target_lun; ASC_PADDR data_addr; ASC_DCNT data_cnt; ASC_PADDR sense_addr; uchar sense_len; uchar extra_bytes;} ASC_SCSIQ_1;typedef struct asc_scisq_2 { ASC_VADDR srb_ptr; uchar target_ix; uchar flag; uchar cdb_len; uchar tag_code; ushort vm_id;} ASC_SCSIQ_2;typedef struct asc_scsiq_3 { uchar done_stat; uchar host_stat; uchar scsi_stat; uchar scsi_msg;} ASC_SCSIQ_3;typedef struct asc_scsiq_4 { uchar cdb[ASC_MAX_CDB_LEN]; uchar y_first_sg_list_qp; uchar y_working_sg_qp; uchar y_working_sg_ix; uchar y_res; ushort x_req_count; ushort x_reconnect_rtn; ASC_PADDR x_saved_data_addr; ASC_DCNT x_saved_data_cnt;} ASC_SCSIQ_4;typedef struct asc_q_done_info { ASC_SCSIQ_2 d2; ASC_SCSIQ_3 d3; uchar q_status; uchar q_no; uchar cntl; uchar sense_len; uchar extra_bytes; uchar res; ASC_DCNT remain_bytes;} ASC_QDONE_INFO;typedef struct asc_sg_list { ASC_PADDR addr; ASC_DCNT bytes;} ASC_SG_LIST;typedef struct asc_sg_head { ushort entry_cnt; ushort queue_cnt; ushort entry_to_copy; ushort res; ASC_SG_LIST sg_list[ASC_MAX_SG_LIST];} ASC_SG_HEAD;#define ASC_MIN_SG_LIST 2typedef struct asc_min_sg_head { ushort entry_cnt; ushort queue_cnt;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -