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

📄 scsi.c

📁 操作系统SunOS 4.1.3版本的源码
💻 C
字号:
/* * @(#)scsi.c 1.1 92/07/30 Copyright (c) 1988 by Sun Microsystems, Inc. * Copyright (c) 1986 by Sun Microsystems, Inc. * * Contains SCSI probe routine to probe for host adapter. *//*#define SCSI_DEBUG	1	/* Allow compiling of debug code */#define REL4			/* Enable release 4.00 mods */#ifdef	REL4#include <sys/types.h>#include <mon/sunromvec.h>#include <stand/saio.h>#include <stand/scsi.h>#include <mon/idprom.h>#else	REL4#include "../h/types.h"#include "../mon/sunromvec.h"#include "../mon/idprom.h"#include "saio.h"#include "scsi.h"#endif	REL4					/* external routines */#ifdef	sun2extern	scopen();#endif	sun2#ifdef	sun3extern	siopen(), scopen(), se_open();#endif	sun2#ifdef	sun3xextern	siopen(), scopen(), se_open(), smopen();#endif	sun3x#ifdef	sun4extern	swopen(), smopen();#endif	sun4#ifdef SCSI_DEBUGint scsi_debug = SCSI_DEBUG;		/* 0 = normal operation					 * 1 = extended error info only					 * 2 = debug and error info					 * 3 = all status info					 *//* Handy debugging 0, 1, and 2 argument printfs */#define DPRINTF(str) \	if (scsi_debug > 1) printf(str)#define DPRINTF1(str, arg1) \	if (scsi_debug > 1) printf(str,arg1)#define DPRINTF2(str, arg1, arg2) \	if (scsi_debug > 1) printf(str,arg1,arg2)/* Handy extended error reporting 0, 1, and 2 argument printfs */#define EPRINTF(str) \	if (scsi_debug) printf(str)#define EPRINTF1(str, arg1) \	if (scsi_debug) printf(str,arg1)#define EPRINTF2(str, arg1, arg2) \	if (scsi_debug) printf(str,arg1,arg2)#else SCSI_DEBUGint scsi_debug = 0;#define DPRINTF(str)#define DPRINTF1(str, arg2)#define DPRINTF2(str, arg1, arg2)#define EPRINTF(str)#define EPRINTF1(str, arg2)#define EPRINTF2(str, arg1, arg2)#endif SCSI_DEBUG/*  * scsi reset flag */int sc_reset = 0;/*  * scsi CDB op code to command length decode table. */u_char sc_cdb_size[] = {	CDB_GROUP0,		/* Group 0, 6 byte cdb */	CDB_GROUP1,		/* Group 1, 10 byte cdb */	CDB_GROUP2,		/* Group 2, ? byte cdb */	CDB_GROUP3,		/* Group 3, ? byte cdb */	CDB_GROUP4,		/* Group 4, ? byte cdb */	CDB_GROUP5,		/* Group 5, ? byte cdb */	CDB_GROUP6,		/* Group 6, ? byte cdb */	CDB_GROUP7		/* Group 7, ? byte cdb */};/* * Description:	Probe for SCSI host adaptor interface.  * * 		SI vme scsi host adaptor occupies 2K bytes in the vme address * 		space.  SC vme scsi host adaptor occupies 4K bytes in the vme * 		address space.  This difference is used to determine which host *		adapter is connected. * *		The call to si_open will determine whether the system has a *		on-board si host adapter, or not.  Similarly, scopen will *		determine whether the system has a multibus or VME bus. * * Synopsis:	status = scsi_probe(sip) *		status	:(int) 0 one of the host-adapter found *			      -1 neither host-adapter found *		h_sip	:(int *) pointer to host adapter structure * Routines:	scopen, siopen */intscsi_probe(h_sip)	register struct host_saioreq	*h_sip;{#ifdef	sun2	DPRINTF("scsi_probe: sc\n");	/* For Sun-2, there is only the SCSI-2 (sc). */	if (scopen(h_sip) == 0) {		EPRINTF("scsi_probe: using sc\n");		return (0);	}#endif	sun2	/*	 * For Sun-3 and Sun-4, there are several choices:	 * VME SCSI-3, onboard Sun-3 SCSI-3, onborad Sun-4 SCSI-3,	 * and VME SCSI-2.  Si takes care of all the SCSI-3 permutations.	 * Sc takes care of SCSI-2.	 */#ifdef	sun4	DPRINTF("scsi_probe: sw\n");	/* Check for Sun-4/110 SCSI */	if (swopen(h_sip) == 0) {		EPRINTF("scsi_probe: using sw\n");		return (0);	}	/* last test for Emulex ESP controller */	/* Check for Sun-4 STINGRAY SCSI */	DPRINTF("scsi_probe: sm\n");	if (smopen(h_sip) == 0) {		EPRINTF("scsi_probe: using sm\n");		return (0);	}#endif	sun4#if	defined(sun3) || defined(sun3x) || defined(sun4)	/* Check for Sun-3 SCSI-3 */	DPRINTF("scsi_probe: si\n");	if (siopen(h_sip) == 0) {		EPRINTF("scsi_probe: using si\n");		return (0);	}	/* Check for Sun-3E SCSI */	DPRINTF("scsi_probe: se\n");	if (se_open(h_sip) == 0) {		EPRINTF("scsi_probe: using se\n");		return (0);	}	/* Check for Sun-2/3 SCSI-2 */	DPRINTF("scsi_probe: sc\n");	if (scopen(h_sip) == 0) {		EPRINTF("scsi_probe: using sc\n");		return (0);	}#ifdef	sun3x	/* last test for Emulex ESP controller */	/* Check for Sun-3x HYDRA SCSI */	DPRINTF("scsi_probe: sm\n");	if (smopen(h_sip) == 0) {		EPRINTF("scsi_probe: using sm\n");		return (0);	}#endif	sun3x#endif	sun3 || sun3x || sun4#ifdef	lint	scsi_debug = scsi_debug;#endif	lint	/* No host adapter found */	return (-1);}

⌨️ 快捷键说明

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