📄 advansys.c
字号:
#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_SG_WK_QP 49#define ASC_SCSIQ_B_SG_WK_IX 50#define ASC_SCSIQ_W_REQ_COUNT 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; ulong data_addr; ulong data_cnt; ulong sense_addr; uchar sense_len; uchar extra_bytes;} ASC_SCSIQ_1;typedef struct asc_scisq_2 { ulong 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; ulong x_saved_data_addr; ulong 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; ulong remain_bytes;} ASC_QDONE_INFO;typedef struct asc_sg_list { ulong addr; ulong 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; ushort entry_to_copy; ushort res; ASC_SG_LIST sg_list[ASC_MIN_SG_LIST];} ASC_MIN_SG_HEAD;#define QCX_SORT (0x0001)#define QCX_COALEASE (0x0002)typedef struct asc_scsi_q { ASC_SCSIQ_1 q1; ASC_SCSIQ_2 q2; uchar *cdbptr; ASC_SG_HEAD *sg_head;} ASC_SCSI_Q;typedef struct asc_scsi_req_q { ASC_SCSIQ_1 r1; ASC_SCSIQ_2 r2; uchar *cdbptr; ASC_SG_HEAD *sg_head; uchar *sense_ptr; ASC_SCSIQ_3 r3; uchar cdb[ASC_MAX_CDB_LEN]; uchar sense[ASC_MIN_SENSE_LEN];} ASC_SCSI_REQ_Q;typedef struct asc_scsi_bios_req_q { ASC_SCSIQ_1 r1; ASC_SCSIQ_2 r2; uchar *cdbptr; ASC_SG_HEAD *sg_head; uchar *sense_ptr; ASC_SCSIQ_3 r3; uchar cdb[ASC_MAX_CDB_LEN]; uchar sense[ASC_MIN_SENSE_LEN];} ASC_SCSI_BIOS_REQ_Q;typedef struct asc_risc_q { uchar fwd; uchar bwd; ASC_SCSIQ_1 i1; ASC_SCSIQ_2 i2; ASC_SCSIQ_3 i3; ASC_SCSIQ_4 i4;} ASC_RISC_Q;typedef struct asc_sg_list_q { uchar seq_no; uchar q_no; uchar cntl; uchar sg_head_qp; uchar sg_list_cnt; uchar sg_cur_list_cnt;} ASC_SG_LIST_Q;typedef struct asc_risc_sg_list_q { uchar fwd; uchar bwd; ASC_SG_LIST_Q sg; ASC_SG_LIST sg_list[7];} ASC_RISC_SG_LIST_Q;#define ASC_EXE_SCSI_IO_MAX_IDLE_LOOP 0x1000000UL#define ASC_EXE_SCSI_IO_MAX_WAIT_LOOP 1024#define ASCQ_ERR_NO_ERROR 0#define ASCQ_ERR_IO_NOT_FOUND 1#define ASCQ_ERR_LOCAL_MEM 2#define ASCQ_ERR_CHKSUM 3#define ASCQ_ERR_START_CHIP 4#define ASCQ_ERR_INT_TARGET_ID 5#define ASCQ_ERR_INT_LOCAL_MEM 6#define ASCQ_ERR_HALT_RISC 7#define ASCQ_ERR_GET_ASPI_ENTRY 8#define ASCQ_ERR_CLOSE_ASPI 9#define ASCQ_ERR_HOST_INQUIRY 0x0A#define ASCQ_ERR_SAVED_SRB_BAD 0x0B#define ASCQ_ERR_QCNTL_SG_LIST 0x0C#define ASCQ_ERR_Q_STATUS 0x0D#define ASCQ_ERR_WR_SCSIQ 0x0E
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -