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

📄 dasd_3370_erp.c

📁 这个linux源代码是很全面的~基本完整了~使用c编译的~由于时间问题我没有亲自测试~但就算用来做参考资料也是非常好的
💻 C
字号:
/*  * File...........: linux/drivers/s390/block/dasd_3370_erp.c * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com> * Bugreports.to..: <Linux390@de.ibm.com> * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 2000 */#include <asm/ccwcache.h>#include "dasd_int.h"#include "dasd_3370_erp.h"#ifdef PRINTK_HEADER#undef PRINTK_HEADER#define PRINTK_HEADER "dasd_erp(3370)"#endif				/* PRINTK_HEADER *//* * DASD_3370_ERP_EXAMINE  * * DESCRIPTION *   Checks only for fatal/no/recover error.  *   A detailed examination of the sense data is done later outside *   the interrupt handler. * *   The logic is based on the 'IBM 3880 Storage Control Reference' manual *   'Chapter 7. 3370 Sense Data'. * * RETURN VALUES *   dasd_era_none      no error  *   dasd_era_fatal     for all fatal (unrecoverable errors) *   dasd_era_recover   for all others. */dasd_era_t dasd_3370_erp_examine (ccw_req_t * cqr, devstat_t * stat){	char *sense = stat->ii.sense.data;	/* check for successful execution first */	if (stat->cstat == 0x00 &&	    stat->dstat == (DEV_STAT_CHN_END | DEV_STAT_DEV_END))		    return dasd_era_none;	if (sense[0] & 0x80) {	/* CMD reject */		return dasd_era_fatal;	}	if (sense[0] & 0x40) {	/* Drive offline */		return dasd_era_recover;	}	if (sense[0] & 0x20) {	/* Bus out parity */		return dasd_era_recover;	}	if (sense[0] & 0x10) {	/* equipment check */		if (sense[1] & 0x80) {			return dasd_era_fatal;		}		return dasd_era_recover;	}	if (sense[0] & 0x08) {	/* data check */		if (sense[1] & 0x80) {			return dasd_era_fatal;		}		return dasd_era_recover;	}	if (sense[0] & 0x04) {	/* overrun */		if (sense[1] & 0x80) {			return dasd_era_fatal;		}		return dasd_era_recover;	}	if (sense[1] & 0x40) {	/* invalid blocksize */		return dasd_era_fatal;	}	if (sense[1] & 0x04) {	/* file protected */		return dasd_era_recover;	}	if (sense[1] & 0x01) {	/* operation incomplete */		return dasd_era_recover;	}	if (sense[2] & 0x80) {	/* check data erroor */		return dasd_era_recover;	}	if (sense[2] & 0x10) {	/* Env. data present */		return dasd_era_recover;	}	/* examine the 24 byte sense data */	return dasd_era_recover;}				/* END dasd_3370_erp_examine *//* * Overrides for Emacs so that we follow Linus's tabbing style. * Emacs will notice this stuff at the end of the file and automatically * adjust the settings for this buffer only.  This must remain at the end * of the file. * --------------------------------------------------------------------------- * Local variables: * c-indent-level: 4  * c-brace-imaginary-offset: 0 * c-brace-offset: -4 * c-argdecl-indent: 4 * c-label-offset: -4 * c-continued-statement-offset: 4 * c-continued-brace-offset: 0 * indent-tabs-mode: nil * tab-width: 8 * End: */

⌨️ 快捷键说明

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