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

📄 scsi.c

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻 C
📖 第 1 页 / 共 3 页
字号:
	{ SZ_ASC_RERROR, "SZ_ASC_RERROR"                            },#endif vax        { NULL,          NULL                                       }};struct scsi_dcode scsi_device_class[] = {	{ SZ_TAPE,       "TAPE device"                              },        { SZ_DISK,       "DISK device"                              },	{ SZ_CDROM,      "CDROM device"                             },	{ SZ_UNKNOWN,    "UNKNOWN/UNSUPPORTED device"               },        { TZ30,          "TZ30 cartridge tape"                      },	{ TZK50,         "TZK50 cartridge tape"                     },        { TZxx,          "TZxx non-DEC tape (may[not] work)"        },	{ TZ05,		 "CSS TZ05 tape"			    },	{ TZ07,		 "CSS TZ07 tape"			    },	{ TZ9TRK,	 "Generic non-DEC 9trk tape"		    },	{ TLZ04,	 "TLZ04 (RDAT) tape"			    },	{ TZRDAT,	 "Generic RDAT tape"			    },	{ TZK10,	 "TZK10 (QIC) tape"			    },	{ TZQIC,	 "Generic non-DEC QIC tape"                 },	{ TZK08,	 "Exabyte TZK08 8mm tape"		    },	{ TZ8MM,	 "Generic non-DEC 8mm tape"		    },	{ RZ22,          "RZ22  40 MB winchester disk"              },	{ RZ23,          "RZ23 100 MB winchester disk"              },        { RZ55,          "RZ55 300+ MB winchester disk"             },#ifdef vax	{ RZ56,          "RZ56 600+ MB winchester disk"             },#endif vax	{ RX23,          "RX23 3.5 1.4MB SCSI floppy disk"          },	{ RX33,          "RX33 5.25 1.2MB SCSI floppy disk"         },	{ RZxx,          "RZxx non-DEC disk (may[not] work)"        },	{ RZ24,          "RZ24 winchester disk"                     },	{ RZ57,          "RZ57 winchester disk"                     },	{ RZ23L,         "RZ23L 116Mb winchester disk"              },	{ RX26,          "RX26 3.5 2.8MB SCSI floppy disk"          },	{ RZ25,          "RZ25 winchester disk"                     },	{ RRD40,         "RRD40 CDROM (optical disk)"               },#ifdef vax	{ CDxx,          "CDxx non-DEC CDROM (may[not] work)"       },#endif vax	{ RRD42,         "RRD42 CDROM (optical disk)"               },        { NULL,          NULL                                       }};char *token();c_scsibus(c)	char *c;{	char *arg;	int index;	unsigned int addr;		arg = token();		if (scsi_read_softc() < 0)		return;		/*	 * If arg is NULL, print everything.	 */	if (arg == NULL) {		printscsi(do_scsiprint_cntlr);		return;	}	if ((strncmp(arg, "-ta", 3) == 0) ||	    (strncmp(arg, "ta", 2) == 0)) {		printscsi(do_scsiprint_targ);		return;	}	if ((strncmp(arg, "-de", 3) == 0) ||	    (strncmp(arg, "de", 2) == 0)) {		printscsi(do_scsiprint_devtab);		return;	}	if ((strncmp(arg, "-tr", 3) == 0) ||	    (strncmp(arg, "tr", 2) == 0)) {		printscsi(do_scsiprint_trans);		return;	}	if ((strncmp(arg, "-cm", 3) == 0) ||	    (strncmp(arg, "cm", 2) == 0)) {		printscsi(do_scsiprint_cmd);		return;	}	if ((strncmp(arg, "-bb", 3) == 0) ||	    (strncmp(arg, "bb", 2) == 0)) {		printscsi(do_scsiprint_bbr);		return;	}	if ((strncmp(arg, "-er", 3) == 0) ||	    (strncmp(arg, "er", 2) == 0)) {		printscsi(do_scsiprint_err);		return;	}	if ((strncmp(arg, "-si", 3) == 0) ||	    (strncmp(arg, "si", 2) == 0)) {		printscsi(do_scsiprint_sii);		return;	}	if ((strncmp(arg, "-dc", 3) == 0) ||	    (strncmp(arg, "dc", 2) == 0)) {		printscsi(do_scsiprint_dctstats);		return;	}	if ((strncmp(arg, "-sp", 3) == 0) ||	    (strncmp(arg, "sp", 2) == 0)) {		printscsi(do_scsiprint_spinstats);		return;	}	if ((strncmp(arg, "-a", 2) == 0) ||	    (strncmp(arg, "a", 1) == 0)) {		printscsi(do_scsiprint_cntlr);		printscsi(do_scsiprint_targ);		printscsi(do_scsiprint_devtab);		printscsi(do_scsiprint_trans);		printscsi(do_scsiprint_cmd);		printscsi(do_scsiprint_bbr);		printscsi(do_scsiprint_err);		printscsi(do_scsiprint_sii);		printscsi(do_scsiprint_dctstats);		printscsi(do_scsiprint_spinstats);				return;	}		printf("SCSI help, try:\n");	printf("\t-target\t");	printf("\t-devtab\t");	printf("\t-transfer\n");	printf("\t-cmd\t");	printf("\t-bbr\t");	printf("\t-error\n");	printf("\t-sii\t");	printf("\t-dctstats\t");	printf("-spinstats\n");	printf("\t-all\n");	}int nNSCSIBUS;struct sz_softc *sz_softc;/* * scsi_read_softc will read in the sz_softc structure for all * the scsi controllers.   */intscsi_read_softc(){	static int already_called = 0;	int s_value;	if (already_called)		return(0);	if (Nscsibus.s_value == 0) {		printf("\tNULL nNSCSIBUS value\n");		return(-1);	}	if (readmem((char *) &nNSCSIBUS, Nscsibus.s_value, sizeof(int)) !=	    sizeof(int)) {		printf("Could not read nNSCSIBUS at 0x%x.\n",Nscsibus.s_value);		return(-1);	}	if (Sz_softc.s_value == 0) {		printf("\tNULL sz_softc pointer\n");		return(-1);	}	s_value = Sz_softc.s_value;	sz_softc = (struct sz_softc *) malloc(sizeof(struct sz_softc)*nNSCSIBUS);	if (readmem(sz_softc, s_value, sizeof(struct sz_softc) * nNSCSIBUS) !=	    sizeof(struct sz_softc) * nNSCSIBUS) {		printf("Could not read sz_softc at 0x%x.\n",s_value);		return(-1);	}	already_called = 1;	return(0);}/* * Call the passed function for each controller that exists */printscsi(fn)void (*fn)();{	int cntlr;	for (cntlr=0; cntlr < nNSCSIBUS; cntlr++)		fn(cntlr);}/* * Print SCSI controller related information. */void		do_scsiprint_cntlr(cntrl)int cntrl;{	struct sz_softc *sc = &sz_softc[cntrl];	printf("\nSCSI controller information:\n");	printf("SCSI controller #%d:\n",cntrl);	printf("\tsc_sysid:\t0x%x\n",sc->sc_sysid);	printf("\tsc_cntlr_alive:\t%d\n",sc->sc_cntlr_alive);	printf("\tsc_aipfts:\t%d\n",sc->sc_aipfts);	printf("\tsc_lostarg:\t%d\n",sc->sc_lostarb);	printf("\tsc_lastid:\t%d\n",sc->sc_lastid);	printf("\tsc_sc_active:\t%d\n",sc->sc_active);	printf("\tsc_prevpha:\t%s\n",	       scsi_decode((long)sc->sc_prevpha, scsi_phase_states,			   EQUAL_MATCH));	printf("\tsc_fstate:\t%s\n",	       scsi_decode((long)sc->sc_fstate, scsi_phase_states,			   EQUAL_MATCH));	printf("\tport_start:\t"); praddr(sc->port_start); printf("\n");	printf("\tport_reset:\t"); praddr(sc->port_reset); printf("\n");#ifdef vax	printf("\tsc_swcount:\t%d\n",sc->sc_swcount);	printf("\tsc_rip:\t\t%d\n",sc->sc_rip);	printf("\tsc_scs_selena:\t0x%x\n",sc->sc_scs_selena);#endif vax	printf("\tsc_progress:\t0x%x\n",sc->sc_progress);}/* * Print SCSI target related information */voiddo_scsiprint_targ(cntrl)int cntrl;{	struct sz_softc *sc = &sz_softc[cntrl];	char temp[132];	int i;	for (i=0; i < NDPS; i++) {		if (sc->sc_devtyp[i] == 0)			continue;		printf("\nSCSI target informaiton:\n");		printf("Controller #%d Targid #%d:\n", cntrl, i);		printf("\tsc_alive:\t%d\n",sc->sc_alive[i]);		printf("\tdevice_comp:\t"); praddr(sc->device_comp[i]);		printf("\n");		printf("\tsc_flags:\t%s\n",		       scsi_decode(sc->sc_flags[i], scsi_stat_devio,				   OR_MATCH));		printf("\tsc_cat_flags:\t%s\n",		       scsi_decode(sc->sc_category_flags[i],				   scsi_category_stat_devio, OR_MATCH));		printf("\tsc_devtype:\t%s\n",		       scsi_decode((long)sc->sc_devtyp[i],				   scsi_device_class, OR_MATCH));		printf("\tsc_unit:\t%d\n", sc->sc_unit[i]);		bzero(temp, sizeof(temp));		strncpy(temp, sc->sc_device[i], DEV_SIZE);		printf("\tsc_device:\t%s\n", temp);		printf("\tsc_szflags:\t%s\n",		       scsi_decode(sc->sc_szflags[i],				   scsi_sc_szflags, OR_MATCH));		printf("\tsc_curcmd:\t%s\n",		       scsi_decode((long)sc->sc_curcmd[i],				   scsi_command_opcodes, EQUAL_MATCH));		printf("\tsc_actcmd:\t%s\n",		       scsi_decode((long)sc->sc_actcmd[i],				   scsi_command_opcodes, EQUAL_MATCH));		printf("\tsc_selstat:\t%s\n",		       scsi_decode((long)sc->sc_selstat[i],				   scsi_sc_selstat, EQUAL_MATCH));		printf("\tsc_xstate:\t%s\n",		       scsi_decode((long)sc->sc_xstate[i],				   scsi_statpos_states, EQUAL_MATCH));		printf("\tsc_xevent:\t%s\n",		       scsi_decode((long)sc->sc_xevent[i],				   scsi_statpos_states, EQUAL_MATCH));		printf("\tsc_pxstate:\t%s\n",		       scsi_decode((long)sc->sc_pxstate[i],				   scsi_statpos_states, EQUAL_MATCH));		printf("\tsc_c_status:\t%s\n",		       scsi_decode((long)sc->sc_c_status[i],				   scsi_status_byte, EQUAL_MATCH));		printf("\tsc_c_snskey:\t%s\n",		       scsi_decode((long)sc->sc_c_snskey[i],				   scsi_request_sense_key, EQUAL_MATCH));		printf("\tsc_status:\t%s\n",		       scsi_decode((long)sc->sc_status[i],				   scsi_status_byte, EQUAL_MATCH));		printf("\tsc_message:\t%s\n",		       scsi_decode((long)sc->sc_message[i],				   scsi_mesg_protocols, EQUAL_MATCH));		bzero(temp, sizeof(temp));		strncpy(temp, sc->sc_devnam[i], SZ_DNSIZE);		printf("\tsc_devnam:\t%s\n", temp);		bzero(temp, sizeof(temp));		strncpy(temp, sc->sc_revlvl[i], SZ_REV_LEN);		printf("\tsc_revlvl:\t%s\n", temp);	}}/* * Print SCSI devtab information */voiddo_scsiprint_devtab(cntlr)int cntlr;{	struct sz_softc *sc = &sz_softc[cntlr];	struct scsi_devtab devtab;	char name[132];	int i;	for (i=0; i < NDPS; i++) {		if (sc->sc_devtyp[i] == 0)			continue;		bzero(name, sizeof(name));		bzero(&devtab, sizeof(devtab));		printf("\nSCSI device tab information:\n");		printf("Controller #%d Targid #%d:\n", cntlr, i);		if (readmem((char *)&devtab, (int) sc->sc_devtab[i],			sizeof(devtab)) != sizeof(devtab))		{			printf("Unable to read in the devtab.\n");			continue;		}		if (readmem(name, (int) devtab.name, devtab.namelen) !=		    devtab.namelen)

⌨️ 快捷键说明

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