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

📄 isp_inline.h

📁 这个linux源代码是很全面的~基本完整了~使用c编译的~由于时间问题我没有亲自测试~但就算用来做参考资料也是非常好的
💻 H
📖 第 1 页 / 共 4 页
字号:
	ISP_IOXPUT_16(isp, src->snscb_addr[2], &dst->snscb_addr[2]);	ISP_IOXPUT_16(isp, src->snscb_addr[3], &dst->snscb_addr[3]);	ISP_IOXPUT_16(isp, src->snscb_sblen, &dst->snscb_sblen);	ISP_IOXPUT_16(isp, src->snscb_res1, &dst->snscb_res1);	ISP_IOXPUT_16(isp, src->snscb_cmd, &dst->snscb_cmd);	ISP_IOXPUT_16(isp, src->snscb_mword_div_2, &dst->snscb_mword_div_2);	ISP_IOXPUT_32(isp, src->snscb_res3, &dst->snscb_res3);	ISP_IOXPUT_16(isp, src->snscb_fc4_type, &dst->snscb_fc4_type);}static INLINE voidisp_put_gxn_id_request(struct ispsoftc *isp, sns_gxn_id_req_t *src,    sns_gxn_id_req_t *dst){	ISP_IOXPUT_16(isp, src->snscb_rblen, &dst->snscb_rblen);	ISP_IOXPUT_16(isp, src->snscb_res0, &dst->snscb_res0);	ISP_IOXPUT_16(isp, src->snscb_addr[0], &dst->snscb_addr[0]);	ISP_IOXPUT_16(isp, src->snscb_addr[1], &dst->snscb_addr[1]);	ISP_IOXPUT_16(isp, src->snscb_addr[2], &dst->snscb_addr[2]);	ISP_IOXPUT_16(isp, src->snscb_addr[3], &dst->snscb_addr[3]);	ISP_IOXPUT_16(isp, src->snscb_sblen, &dst->snscb_sblen);	ISP_IOXPUT_16(isp, src->snscb_res1, &dst->snscb_res1);	ISP_IOXPUT_16(isp, src->snscb_cmd, &dst->snscb_cmd);	ISP_IOXPUT_16(isp, src->snscb_res2, &dst->snscb_res2);	ISP_IOXPUT_32(isp, src->snscb_res3, &dst->snscb_res3);	ISP_IOXPUT_32(isp, src->snscb_portid, &dst->snscb_portid);}/* * Generic SNS response - not particularly useful since the per-command data * isn't always 16 bit words. */static INLINE voidisp_get_sns_response(struct ispsoftc *isp, sns_scrsp_t *src,    sns_scrsp_t *dst, int nwords){	int i;	isp_get_ct_hdr(isp, &src->snscb_cthdr, &dst->snscb_cthdr);	ISP_IOXGET_8(isp, &src->snscb_port_type, dst->snscb_port_type);	for (i = 0; i < 3; i++) {		ISP_IOXGET_8(isp, &src->snscb_port_id[i],		    dst->snscb_port_id[i]);	}	for (i = 0; i < 8; i++) {		ISP_IOXGET_8(isp, &src->snscb_portname[i],		    dst->snscb_portname[i]);	}	for (i = 0; i < nwords; i++) {		ISP_IOXGET_16(isp, &src->snscb_data[i], dst->snscb_data[i]);	}}static INLINE voidisp_get_gid_ft_response(struct ispsoftc *isp, sns_gid_ft_rsp_t *src,    sns_gid_ft_rsp_t *dst, int nwords){	int i;	isp_get_ct_hdr(isp, &src->snscb_cthdr, &dst->snscb_cthdr);	for (i = 0; i < nwords; i++) {		int j;		ISP_IOXGET_8(isp,		    &src->snscb_ports[i].control,		    dst->snscb_ports[i].control);		for (j = 0; j < 3; j++) {			ISP_IOXGET_8(isp,			    &src->snscb_ports[i].portid[j],			    dst->snscb_ports[i].portid[j]);		}		if (dst->snscb_ports[i].control & 0x80) {			break;		}	}}static INLINE voidisp_get_gxn_id_response(struct ispsoftc *isp, sns_gxn_id_rsp_t *src,    sns_gxn_id_rsp_t *dst){	int i;	isp_get_ct_hdr(isp, &src->snscb_cthdr, &dst->snscb_cthdr);	for (i = 0; i < 8; i++)		ISP_IOXGET_8(isp, &src->snscb_wwn[i], dst->snscb_wwn[i]);}static INLINE voidisp_get_ga_nxt_response(struct ispsoftc *isp, sns_ga_nxt_rsp_t *src,    sns_ga_nxt_rsp_t *dst){	int i;	isp_get_ct_hdr(isp, &src->snscb_cthdr, &dst->snscb_cthdr);	ISP_IOXGET_8(isp, &src->snscb_port_type, dst->snscb_port_type);	for (i = 0; i < 3; i++) {		ISP_IOXGET_8(isp, &src->snscb_port_id[i],		    dst->snscb_port_id[i]);	}	for (i = 0; i < 8; i++) {		ISP_IOXGET_8(isp, &src->snscb_portname[i],		    dst->snscb_portname[i]);	}	ISP_IOXGET_8(isp, &src->snscb_pnlen, dst->snscb_pnlen);	for (i = 0; i < 255; i++) {		ISP_IOXGET_8(isp, &src->snscb_pname[i], dst->snscb_pname[i]);	}	for (i = 0; i < 8; i++) {		ISP_IOXGET_8(isp, &src->snscb_nodename[i],		    dst->snscb_nodename[i]);	}	ISP_IOXGET_8(isp, &src->snscb_nnlen, dst->snscb_nnlen);	for (i = 0; i < 255; i++) {		ISP_IOXGET_8(isp, &src->snscb_nname[i], dst->snscb_nname[i]);	}	for (i = 0; i < 8; i++) {		ISP_IOXGET_8(isp, &src->snscb_ipassoc[i],		    dst->snscb_ipassoc[i]);	}	for (i = 0; i < 16; i++) {		ISP_IOXGET_8(isp, &src->snscb_ipaddr[i], dst->snscb_ipaddr[i]);	}	for (i = 0; i < 4; i++) {		ISP_IOXGET_8(isp, &src->snscb_svc_class[i],		    dst->snscb_svc_class[i]);	}	for (i = 0; i < 32; i++) {		ISP_IOXGET_8(isp, &src->snscb_fc4_types[i],		    dst->snscb_fc4_types[i]);	}	for (i = 0; i < 8; i++) {		ISP_IOXGET_8(isp, &src->snscb_fpname[i], dst->snscb_fpname[i]);	}	ISP_IOXGET_8(isp, &src->snscb_reserved, dst->snscb_reserved);	for (i = 0; i < 3; i++) {		ISP_IOXGET_8(isp, &src->snscb_hardaddr[i],		    dst->snscb_hardaddr[i]);	}}#ifdef	ISP_TARGET_MODEstatic INLINE voidisp_put_atio(struct ispsoftc *isp, at_entry_t *atsrc, at_entry_t *atdst){	int i;	isp_copy_out_hdr(isp, &atsrc->at_header, &atdst->at_header);	ISP_IOXPUT_16(isp, atsrc->at_reserved, &atdst->at_reserved);	ISP_IOXPUT_16(isp, atsrc->at_handle, &atdst->at_handle);	if (ISP_IS_SBUS(isp)) {		ISP_IOXPUT_8(isp, atsrc->at_lun, &atdst->at_iid);		ISP_IOXPUT_8(isp, atsrc->at_iid, &atdst->at_lun);		ISP_IOXPUT_8(isp, atsrc->at_cdblen, &atdst->at_tgt);		ISP_IOXPUT_8(isp, atsrc->at_tgt, &atdst->at_cdblen);		ISP_IOXPUT_8(isp, atsrc->at_status, &atdst->at_scsi_status);		ISP_IOXPUT_8(isp, atsrc->at_scsi_status, &atdst->at_status);		ISP_IOXPUT_8(isp, atsrc->at_tag_val, &atdst->at_tag_type);		ISP_IOXPUT_8(isp, atsrc->at_tag_type, &atdst->at_tag_val);	} else {		ISP_IOXPUT_8(isp, atsrc->at_lun, &atdst->at_lun);		ISP_IOXPUT_8(isp, atsrc->at_iid, &atdst->at_iid);		ISP_IOXPUT_8(isp, atsrc->at_cdblen, &atdst->at_cdblen);		ISP_IOXPUT_8(isp, atsrc->at_tgt, &atdst->at_tgt);		ISP_IOXPUT_8(isp, atsrc->at_status, &atdst->at_status);		ISP_IOXPUT_8(isp, atsrc->at_scsi_status,		    &atdst->at_scsi_status);		ISP_IOXPUT_8(isp, atsrc->at_tag_val, &atdst->at_tag_val);		ISP_IOXPUT_8(isp, atsrc->at_tag_type, &atdst->at_tag_type);	}	ISP_IOXPUT_32(isp, atsrc->at_flags, &atdst->at_flags);	for (i = 0; i < ATIO_CDBLEN; i++) {		ISP_IOXPUT_8(isp, atsrc->at_cdb[i], &atdst->at_cdb[i]);	}	for (i = 0; i < QLTM_SENSELEN; i++) {		ISP_IOXPUT_8(isp, atsrc->at_sense[i], &atdst->at_sense[i]);	}}static INLINE voidisp_get_atio(struct ispsoftc *isp, at_entry_t *atsrc, at_entry_t *atdst){	int i;	isp_copy_in_hdr(isp, &atsrc->at_header, &atdst->at_header);	ISP_IOXGET_16(isp, &atsrc->at_reserved, atdst->at_reserved);	ISP_IOXGET_16(isp, &atsrc->at_handle, atdst->at_handle);	if (ISP_IS_SBUS(isp)) {		ISP_IOXGET_8(isp, &atsrc->at_lun, atdst->at_iid);		ISP_IOXGET_8(isp, &atsrc->at_iid, atdst->at_lun);		ISP_IOXGET_8(isp, &atsrc->at_cdblen, atdst->at_tgt);		ISP_IOXGET_8(isp, &atsrc->at_tgt, atdst->at_cdblen);		ISP_IOXGET_8(isp, &atsrc->at_status, atdst->at_scsi_status);		ISP_IOXGET_8(isp, &atsrc->at_scsi_status, atdst->at_status);		ISP_IOXGET_8(isp, &atsrc->at_tag_val, atdst->at_tag_type);		ISP_IOXGET_8(isp, &atsrc->at_tag_type, atdst->at_tag_val);	} else {		ISP_IOXGET_8(isp, &atsrc->at_lun, atdst->at_lun);		ISP_IOXGET_8(isp, &atsrc->at_iid, atdst->at_iid);		ISP_IOXGET_8(isp, &atsrc->at_cdblen, atdst->at_cdblen);		ISP_IOXGET_8(isp, &atsrc->at_tgt, atdst->at_tgt);		ISP_IOXGET_8(isp, &atsrc->at_status, atdst->at_status);		ISP_IOXGET_8(isp, &atsrc->at_scsi_status,		    atdst->at_scsi_status);		ISP_IOXGET_8(isp, &atsrc->at_tag_val, atdst->at_tag_val);		ISP_IOXGET_8(isp, &atsrc->at_tag_type, atdst->at_tag_type);	}	ISP_IOXGET_32(isp, &atsrc->at_flags, atdst->at_flags);	for (i = 0; i < ATIO_CDBLEN; i++) {		ISP_IOXGET_8(isp, &atsrc->at_cdb[i], atdst->at_cdb[i]);	}	for (i = 0; i < QLTM_SENSELEN; i++) {		ISP_IOXGET_8(isp, &atsrc->at_sense[i], atdst->at_sense[i]);	}}static INLINE voidisp_put_atio2(struct ispsoftc *isp, at2_entry_t *atsrc, at2_entry_t *atdst){	int i;	isp_copy_out_hdr(isp, &atsrc->at_header, &atdst->at_header);	ISP_IOXPUT_32(isp, atsrc->at_reserved, &atdst->at_reserved);	ISP_IOXPUT_8(isp, atsrc->at_lun, &atdst->at_lun);	ISP_IOXPUT_8(isp, atsrc->at_iid, &atdst->at_iid);	ISP_IOXPUT_16(isp, atsrc->at_rxid, &atdst->at_rxid);	ISP_IOXPUT_16(isp, atsrc->at_flags, &atdst->at_flags);	ISP_IOXPUT_16(isp, atsrc->at_status, &atdst->at_status);	ISP_IOXPUT_8(isp, atsrc->at_reserved1, &atdst->at_reserved1);	ISP_IOXPUT_8(isp, atsrc->at_taskcodes, &atdst->at_taskcodes);	ISP_IOXPUT_8(isp, atsrc->at_taskflags, &atdst->at_taskflags);	ISP_IOXPUT_8(isp, atsrc->at_execodes, &atdst->at_execodes);	for (i = 0; i < ATIO2_CDBLEN; i++) {		ISP_IOXPUT_8(isp, atsrc->at_cdb[i], &atdst->at_cdb[i]);	}	ISP_IOXPUT_32(isp, atsrc->at_datalen, &atdst->at_datalen);	ISP_IOXPUT_16(isp, atsrc->at_scclun, &atdst->at_scclun);	for (i = 0; i < 4; i++) {		ISP_IOXPUT_16(isp, atsrc->at_wwpn[i], &atdst->at_wwpn[i]);	}	for (i = 0; i < 6; i++) {		ISP_IOXPUT_16(isp, atsrc->at_reserved2[i],		    &atdst->at_reserved2[i]);	}	ISP_IOXPUT_16(isp, atsrc->at_oxid, &atdst->at_oxid);}static INLINE voidisp_get_atio2(struct ispsoftc *isp, at2_entry_t *atsrc, at2_entry_t *atdst){	int i;	isp_copy_in_hdr(isp, &atsrc->at_header, &atdst->at_header);	ISP_IOXGET_32(isp, &atsrc->at_reserved, atdst->at_reserved);	ISP_IOXGET_8(isp, &atsrc->at_lun, atdst->at_lun);	ISP_IOXGET_8(isp, &atsrc->at_iid, atdst->at_iid);	ISP_IOXGET_16(isp, &atsrc->at_rxid, atdst->at_rxid);	ISP_IOXGET_16(isp, &atsrc->at_flags, atdst->at_flags);	ISP_IOXGET_16(isp, &atsrc->at_status, atdst->at_status);	ISP_IOXGET_8(isp, &atsrc->at_reserved1, atdst->at_reserved1);	ISP_IOXGET_8(isp, &atsrc->at_taskcodes, atdst->at_taskcodes);	ISP_IOXGET_8(isp, &atsrc->at_taskflags, atdst->at_taskflags);	ISP_IOXGET_8(isp, &atsrc->at_execodes, atdst->at_execodes);	for (i = 0; i < ATIO2_CDBLEN; i++) {		ISP_IOXGET_8(isp, &atsrc->at_cdb[i], atdst->at_cdb[i]);	}	ISP_IOXGET_32(isp, &atsrc->at_datalen, atdst->at_datalen);	ISP_IOXGET_16(isp, &atsrc->at_scclun, atdst->at_scclun);	for (i = 0; i < 4; i++) {		ISP_IOXGET_16(isp, &atsrc->at_wwpn[i], atdst->at_wwpn[i]);	}	for (i = 0; i < 6; i++) {		ISP_IOXGET_16(isp, &atsrc->at_reserved2[i],		    atdst->at_reserved2[i]);	}	ISP_IOXGET_16(isp, &atsrc->at_oxid, atdst->at_oxid);}static INLINE voidisp_put_ctio(struct ispsoftc *isp, ct_entry_t *ctsrc, ct_entry_t *ctdst){	int i;	isp_copy_out_hdr(isp, &ctsrc->ct_header, &ctdst->ct_header);	ISP_IOXPUT_16(isp, ctsrc->ct_reserved, &ctdst->ct_reserved);	ISP_IOXPUT_16(isp, ctsrc->ct_fwhandle, &ctdst->ct_fwhandle);	if (ISP_IS_SBUS(isp)) {		ISP_IOXPUT_8(isp, ctsrc->ct_iid, &ctdst->ct_lun);		ISP_IOXPUT_8(isp, ctsrc->ct_lun, &ctdst->ct_iid);		ISP_IOXPUT_8(isp, ctsrc->ct_tgt, &ctdst->ct_reserved2);		ISP_IOXPUT_8(isp, ctsrc->ct_reserved2, &ctdst->ct_tgt);		ISP_IOXPUT_8(isp, ctsrc->ct_status, &ctdst->ct_scsi_status);		ISP_IOXPUT_8(isp, ctsrc->ct_scsi_status, &ctdst->ct_status);		ISP_IOXPUT_8(isp, ctsrc->ct_tag_type, &ctdst->ct_tag_val);		ISP_IOXPUT_8(isp, ctsrc->ct_tag_val, &ctdst->ct_tag_type);	} else {		ISP_IOXPUT_8(isp, ctsrc->ct_iid, &ctdst->ct_iid);		ISP_IOXPUT_8(isp, ctsrc->ct_lun, &ctdst->ct_lun);		ISP_IOXPUT_8(isp, ctsrc->ct_tgt, &ctdst->ct_tgt);		ISP_IOXPUT_8(isp, ctsrc->ct_reserved2, &ctdst->ct_reserved2);		ISP_IOXPUT_8(isp, ctsrc->ct_scsi_status,		    &ctdst->ct_scsi_status);		ISP_IOXPUT_8(isp, ctsrc->ct_status, &ctdst->ct_status);		ISP_IOXPUT_8(isp, ctsrc->ct_tag_type, &ctdst->ct_tag_type);		ISP_IOXPUT_8(isp, ctsrc->ct_tag_val, &ctdst->ct_tag_val);	}	ISP_IOXPUT_32(isp, ctsrc->ct_flags, &ctdst->ct_flags);	ISP_IOXPUT_32(isp, ctsrc->ct_xfrlen, &ctdst->ct_xfrlen);	ISP_IOXPUT_32(isp, ctsrc->ct_resid, &ctdst->ct_resid);	ISP_IOXPUT_16(isp, ctsrc->ct_timeout, &ctdst->ct_timeout);	ISP_IOXPUT_16(isp, ctsrc->ct_seg_count, &ctdst->ct_seg_count);	for (i = 0; i < ISP_RQDSEG; i++) {		ISP_IOXPUT_32(isp, ctsrc->ct_dataseg[i].ds_base,		    &ctdst->ct_dataseg[i].ds_base);		ISP_IOXPUT_32(isp, ctsrc->ct_dataseg[i].ds_count,		    &ctdst->ct_dataseg[i].ds_count);	}}static INLINE voidisp_get_ctio(struct ispsoftc *isp, ct_entry_t *ctsrc, ct_entry_t *ctdst){	int i;	isp_copy_in_hdr(isp, &ctsrc->ct_header, &ctdst->ct_header);	ISP_IOXGET_16(isp, &ctsrc->ct_reserved, ctdst->ct_reserved);	ISP_IOXGET_16(isp, &ctsrc->ct_fwhandle, ctdst->ct_fwhandle);	if (ISP_IS_SBUS(isp)) {		ISP_IOXGET_8(isp, &ctsrc->ct_lun, ctdst->ct_iid);		ISP_IOXGET_8(isp, &ctsrc->ct_iid, ctdst->ct_lun);		ISP_IOXGET_8(isp, &ctsrc->ct_reserved2, ctdst->ct_tgt);		ISP_IOXGET_8(isp, &ctsrc->ct_tgt, ctdst->ct_reserved2);		ISP_IOXGET_8(isp, &ctsrc->ct_status, ctdst->ct_scsi_status);		ISP_IOXGET_8(isp, &ctsrc->ct_scsi_status, ctdst->ct_status);		ISP_IOXGET_8(isp, &ctsrc->ct_tag_val, ctdst->ct_tag_type);		ISP_IOXGET_8(isp, &ctsrc->ct_tag_type, ctdst->ct_tag_val);	} else {		ISP_IOXGET_8(isp, &ctsrc->ct_lun, ctdst->ct_lun);		ISP_IOXGET_8(isp, &ctsrc->ct_iid, ctdst->ct_iid);		ISP_IOXGET_8(isp, &ctsrc->ct_reserved2, ctdst->ct_reserved2);		ISP_IOXGET_8(isp, &ctsrc->ct_tgt, ctdst->ct_tgt);		ISP_IOXGET_8(isp, &ctsrc->ct_status, ctdst->ct_status);		ISP_IOXGET_8(isp, &ctsrc->ct_scsi_status,		    ctdst->ct_scsi_status);		ISP_IOXGET_8(isp, &ctsrc->ct_tag_val, ctdst->ct_tag_val);		ISP_IOXGET_8(isp, &ctsrc->ct_tag_type, ctdst->ct_tag_type);	}	ISP_IOXGET_32(isp, &ctsrc->ct_flags, ctdst->ct_flags);	ISP_IOXGET_32(isp, &ctsrc->ct_xfrlen, ctdst->ct_xfrlen);	ISP_IOXGET_32(isp, &ctsrc->ct_resid, ctdst->ct_resid);	ISP_IOXGET_16(isp, &ctsrc->ct_timeout, ctdst->ct_timeout);	ISP_IOXGET_16(isp, &ctsrc->ct_seg_count, ctdst->ct_seg_count);	for (i = 0; i < ISP_RQDSEG; i++) {		ISP_IOXGET_32(isp,		    &ctsrc->ct_dataseg[i].ds_base,		    ctdst->ct_dataseg[i].ds_base);		ISP_IOXGET_32(isp,		    &ctsrc->ct_dataseg[i].ds_count,		    ctdst->ct_dataseg[i].ds_count);	}}static INLINE voidisp_put_ctio2(struct ispsoftc *isp, ct2_entry_t *ctsrc, ct2_entry_t *ctdst){	int i;	isp_copy_out_hdr(isp, &ctsrc->ct_header, &ctdst->ct_header);	ISP_IOXPUT_16(isp, ctsrc->ct_reserved, &ctdst->ct_reserved);	ISP_IOXPUT_16(isp, ctsrc->ct_fwhandle, &ctdst->ct_fwhandle);	ISP_IOXPUT_8(isp, ctsrc->ct_lun, &ctdst->ct_lun);	ISP_IOXPUT_8(isp, ctsrc->ct_iid, &ctdst->ct_iid);	ISP_IOXPUT_16(isp, ctsrc->ct_rxid, &ctdst->ct_rxid);	ISP_IOXPUT_16(isp, ctsrc->ct_flags, &ctdst->ct_flags);	ISP_IOXPUT_16(isp, ctsrc->ct_timeout, &ctdst->ct_timeout);	ISP_IOXPUT_16(isp, ctsrc->ct_seg_count, &ctdst->ct_seg_count);	ISP_IOXPUT_32(isp, ctsrc->ct_resid, &ctdst->ct_resid);	ISP_IOXPUT_32(isp, ctsrc->ct_reloff, &ctdst->ct_reloff);	if ((ctsrc->ct_flags & CT2_FLAG_MMASK) == CT2_FLAG_MODE0) {		ISP_IOXPUT_32(isp, ctsrc->rsp.m0._reserved,		    &ctdst->rsp.m0._reserved);		ISP_IOXPUT_16(isp, ctsrc->rsp.m0._reserved2,		    &ctdst->rsp.m0._reserved2);

⌨️ 快捷键说明

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