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

📄 scsierrs.c

📁 另一种方法编辑刻录程序的代码!要的与偶联系呀
💻 C
📖 第 1 页 / 共 2 页
字号:
	"\147\003modification of logical unit failed",		/* 67 03 */	"\147\004exchange of logical unit failed",		/* 67 04 */	"\147\005remove of logical unit failed",		/* 67 05 */	"\147\006attachment of logical unit failed",		/* 67 06 */	"\147\007creation of logical unit failed",		/* 67 07 */	"\150\000logical unit not configured",			/* 68 00 */	"\151\000data loss on logical unit",			/* 69 00 */	"\151\001multiple logical unit failures",		/* 69 01 */	"\151\002parity/data mismatch",				/* 69 02 */	"\152\000informational, refer to log",			/* 6A 00 */	"\153\000state change has occurred",			/* 6B 00 */	"\153\001redundancy level got better",			/* 6B 01 */	"\153\002redundancy level got worse",			/* 6B 02 */	"\154\000rebuild failure occurred",			/* 6C 00 */	"\155\000recalculate failure occurred",			/* 6D 00 */	"\156\000command to logical unit failed",		/* 6E 00 */#ifdef	XXX	"\160\000nn decompression exception short algorithm id of nn",	/* 70 00 */#endif	"\161\000decompression exception long algorithm id",	/* 71 00 */	"\162\000session fixation error",			/* 72 00 */	"\162\001session fixation error writing lead-in",	/* 72 01 */	"\162\002session fixation error writing lead-out",	/* 72 02 */	"\162\003session fixation error - incomplete track in session",	/* 72 03 */	"\162\004empty or partially written reserved track",	/* 72 04 */	"\163\000cd control error",				/* 73 00 */	"\163\001power calibration area almost full",		/* 73 01 */	"\163\002power calibration area is full",		/* 73 02 */	"\163\003power calibration area error",			/* 73 03 */	"\163\004program memory area update failure",		/* 73 04 */	"\163\005program memory area is full",			/* 73 05 */#ifdef	XXX	"\200\000start vendor unique",				/* 80 00 */#endif};#ifdef SMO_C501static const char *sd_smo_c501_error_str[] = {	"\012\000disk not inserted",			/* 0x0a */	"\013\000load/unload failure",			/* 0x0b */	"\014\000spindle failure",			/* 0x0c */	"\015\000focus failure",			/* 0x0d */	"\016\000tracking failure",			/* 0x0e */	"\017\000bias magnet failure",			/* 0x0f */	"\043\000illegal function for medium type",	/* 0x23 *//*XXX*/	"\070\000recoverable write error",		/* 0x38 *//*XXX*/	"\071\000write error recovery failed",		/* 0x39 */	"\072\000defect list update failed",		/* 0x3a */	"\075\000defect list not available",		/* 0x3d */	"\200\000limited laser life",			/* 0x80 */	"\201\000laser focus coil over-current",	/* 0x81 */	"\202\000laser tracking coil over-current",	/* 0x82 */	"\203\000temperature alarm",			/* 0x83 */	NULL};#endifstatic char *sd_sense_keys[] = {	"No Additional Sense",		/* 0x00 */	"Recovered Error",		/* 0x01 */	"Not Ready",			/* 0x02 */	"Medium Error",			/* 0x03 */	"Hardware Error",		/* 0x04 */	"Illegal Request",		/* 0x05 */	"Unit Attention",		/* 0x06 */	"Data Protect",			/* 0x07 */	"Blank Check",			/* 0x08 */	"Vendor Unique",		/* 0x09 */	"Copy Aborted",			/* 0x0a */	"Aborted Command",		/* 0x0b */	"Equal",			/* 0x0c */	"Volume Overflow",		/* 0x0d */	"Miscompare",			/* 0x0e */	"Reserved"			/* 0x0f */};static char *sd_cmds[] = {	"\000test unit ready",		/* 0x00 */	"\001rezero",			/* 0x01 */	"\003request sense",		/* 0x03 */	"\004format",			/* 0x04 */	"\007reassign",			/* 0x07 */	"\010read",			/* 0x08 */	"\012write",			/* 0x0a */	"\013seek",			/* 0x0b */	"\022inquiry",			/* 0x12 */	"\025mode select",		/* 0x15 */	"\026reserve",			/* 0x16 */	"\027release",			/* 0x17 */	"\030copy",			/* 0x18 */	"\032mode sense",		/* 0x1a */	"\033start/stop",		/* 0x1b */	"\036door lock",		/* 0x1e */	"\067read defect data",		/* 0x37 */	NULL};EXPORTconst char *scsisensemsg(ctype, code, qual, vec, sbuf)	register 	int	ctype;	register 	int	code;	register 	int	qual;	register const char	**vec;			char	*sbuf;{	register int i;	/*	 * Ignore controller type if error vec is supplied.	 */	if (vec == (const char **)NULL) switch (ctype) {	case DEV_MD21:		vec = sd_ccs_error_str;		break;	case DEV_ACB40X0:	case DEV_ACB4000:	case DEV_ACB4010:	case DEV_ACB4070:	case DEV_ACB5500:		vec = sd_adaptec_error_str;		break;#ifdef	SMO_C501	case DEV_SONY_SMO:		vec = sd_smo_c501_error_str;		break;#endif	default:		vec = sd_ccs_error_str;	}	if (vec == (const char **)NULL)		return ("");	for (i = 0; i < 2; i++) {		while (*vec != (char *) NULL) {			if (code == (u_char)(*vec)[0] &&					qual == (u_char)(*vec)[1]) {				return (&(*vec)[2]);			} else {				vec++;		/* Next entry */			}		}		if (*vec == (char *) NULL)	/* End of List: switch over */			vec = sd_ccs_error_str;	}	if (code == 0x40) {		sprintf(sbuf, "diagnostic failure on component 0x%X", qual);		return (sbuf);	}	if (code == 0x4D) {		sprintf(sbuf, "tagged overlapped commands, queue tag is 0x%X",									qual);		return (sbuf);	}	if (code == 0x70) {		sprintf(sbuf,			"decompression exception short algorithm id of 0x%X",									qual);		return (sbuf);	}	if (qual != 0)		return ((char *)NULL);	if (code <= 0x80) {		sprintf(sbuf, "invalid sense code 0x%X", code);		return (sbuf);	}	sprintf(sbuf, "vendor unique sense code 0x%X", code);	return (sbuf);}#undef	sense	/*XXX JS Hack, solange scgio.h noch nicht fertig ist */EXPORT voidscsierrmsg(sense, status, sense_code, errvec)	register struct scsi_sense	*sense;	register struct scsi_status	*status;	int				sense_code;	const char 			**errvec;{	char	sbuf[80];	const char *sensemsg, *cmdname, *sensekey;#define	ext_sense	((struct scsi_ext_sense* ) sense)	register int blkno = 0;	register int code;	int	badqual = 0;	int	qual = 0;	int	fru = 0;	int	key = 0;	int	segment = 0;	int	blkvalid = 0;	int	fm = 0;	int	eom = 0;	int	ili = 0;	int	sksv = 0;	extern int dev;	sensekey = sensemsg = "[]";	if (sense->code >= 0x70) {		if (sense_code >= 0)			code = sense_code;		else			code = ext_sense->sense_code;		segment = ext_sense->seg_num;		qual = ext_sense->qual_code;		fru = ext_sense->fru_code;		sksv = ext_sense->sksv;	} else {		code = sense->code;	}	if (status->chk == 0) {		sensemsg = "no sense";	} else {		if (sense->code >= 0x70) {			key = ext_sense->key;			if (key < 0x10)				sensekey = sd_sense_keys[ext_sense->key];			else				sensekey = "invalid sensekey";			blkno = (ext_sense->info_1 << 24) |				(ext_sense->info_2 << 16) |				(ext_sense->info_3 << 8) |				ext_sense->info_4;			fm = ext_sense->fil_mk;			eom = ext_sense->eom;			ili = ext_sense->ili;		} else {			key = -1;			sensekey = "[]";			blkno = (sense->high_addr << 16) |				(sense->mid_addr << 8) |				sense->low_addr;			fm = eom = 0;		}		blkvalid = sense->adr_val;		sensemsg = scsisensemsg(dev, code, qual, errvec, sbuf);		if (sensemsg == NULL) {			sensemsg = scsisensemsg(dev, code, 0, errvec, sbuf);			badqual = 1;		}	}/*	if (un->un_cmd < sizeof(scsi_cmds)) {		cmdname = scsi_cmds[un->un_cmd];	} else {		cmdname = "unknown cmd";	}*/	cmdname = "";	printf("%sSense Key: 0x%X %s%s, Segment %d\n",		cmdname, key, sensekey,		(sense->code == 0x71)?", deferred error":"",		segment);	printf("Sense Code: 0x%02X Qual 0x%02X %s%s%s%s Fru 0x%X\n",		code, qual, *sensemsg?"(":"", sensemsg, *sensemsg?")":"",		badqual? " [No matching qualifier]":"",		fru);	printf("Sense flags: Blk %d %s%s%s%s",		blkno, blkvalid?"(valid) ":"(not valid) ",		fm?"file mark detected ":"",		eom?"end of medium ":"",		ili?"illegal block length ":"");	if (!sksv) {		printf("\n");		return;	}	switch (key) {	case SC_ILLEGAL_REQUEST:		printf("error refers to %s part, bit ptr %d %s field ptr %d",			ext_sense->cd? "command":"data",			ext_sense->bptr,			ext_sense->bpv? "(valid)":"(not valid)",			ext_sense->field_ptr[0] << 8 |			ext_sense->field_ptr[1]);		break;	case SC_RECOVERABLE_ERROR:	case SC_HARDWARE_ERROR:	case SC_MEDIUM_ERROR:		printf("actual retry count %d",			ext_sense->field_ptr[0] << 8 |			ext_sense->field_ptr[1]);		break;	case SC_NOT_READY:		printf("operation %d%% done",			(100*(ext_sense->field_ptr[0] << 8 |			      ext_sense->field_ptr[1]))/0x1000);		break;	}	printf("\n");}#ifdef	DEBUGprint_err(code, ctype){	register int i;	register char **vec  = (char **)NULL;	switch (ctype) {	case CTYPE_MD21:	case CTYPE_CCS:		vec = sd_ccs_error_str;		break;	case CTYPE_ACB4000:		vec = sd_adaptec_error_str;		break;#ifdef	SMO_C501	case CTYPE_SMO_C501:		vec = sd_smo_c501_error_str;		break;#endif#ifdef	CDD_521	case DEV_CDD_521:		vec = sd_cdd_521_error_str;		break;#endif	}	printf("error code: 0x%x", code);	if (vec == (char **)NULL)		return;	for (i = 0; i < 2; i++) {		while (*vec != (char *) NULL) {			if (code == (u_char)*vec[0]) {				printf(" (%s)", (char *)((int)(*vec)+1));				return;			} else				vec++;		}		if (*vec == (char *) NULL)			vec = sd_ccs_error_str;	}}int	dev;main(){	int	i;#ifdef ACB	for (i = 0; i < 0x30; i++) {/*		printf("Code: 0x%x	Key: 0x%x	", i, sd_adaptec_keys[i]);*/		printf("Key: 0x%x %-16s ", sd_adaptec_keys[i],					sd_sense_keys[sd_adaptec_keys[i]] );		print_err(i, CTYPE_ACB4000);		printf("\n");	}#else/*	for (i = 0; i < 0x84; i++) {*/	for (i = 0; i < 0xd8; i++) {/*		print_err(i, CTYPE_SMO_C501);*/		print_err(i, DEV_CDD_521);		printf("\n");	}#endif}#endif

⌨️ 快捷键说明

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