diff options
| author | Peter Dufault <dufault@FreeBSD.org> | 1995-03-01 22:29:06 +0000 | 
|---|---|---|
| committer | Peter Dufault <dufault@FreeBSD.org> | 1995-03-01 22:29:06 +0000 | 
| commit | 2778e6ab23906c46a02dcfea13080a3e070c606b (patch) | |
| tree | 2dbee4ad0860f826a29ea2780465b771270bf55f | |
| parent | ebc1a0e2f8e4f542e40b7994cb51e9a7821bb9f2 (diff) | |
Notes
| -rw-r--r-- | sys/i386/i386/conf.c | 6 | ||||
| -rw-r--r-- | sys/i386/i386/userconfig.c | 82 | 
2 files changed, 84 insertions, 4 deletions
| diff --git a/sys/i386/i386/conf.c b/sys/i386/i386/conf.c index b657ffc24018..cf947deb9bb0 100644 --- a/sys/i386/i386/conf.c +++ b/sys/i386/i386/conf.c @@ -42,7 +42,7 @@   * SUCH DAMAGE.   *   *	from: @(#)conf.c	5.8 (Berkeley) 5/12/91 - *	$Id: conf.c,v 1.69 1995/02/27 19:46:27 ugen Exp $ + *	$Id: conf.c,v 1.70 1995/02/28 00:20:45 pst Exp $   */  #include <sys/param.h> @@ -629,8 +629,8 @@ d_strategy_t	sustrategy;  #define	sustrategy	nxstrategy  #endif -#include "uk.h" -#if NUK > 0 +#include "scbus.h" +#if NSCBUS > 0  d_open_t	ukopen;  d_close_t	ukclose;  d_ioctl_t	ukioctl; diff --git a/sys/i386/i386/userconfig.c b/sys/i386/i386/userconfig.c index 78ab7a56b97b..3f9730b56412 100644 --- a/sys/i386/i386/userconfig.c +++ b/sys/i386/i386/userconfig.c @@ -38,7 +38,7 @@   * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF   * SUCH DAMAGE.   * - *      $Id: userconfig.c,v 1.17 1995/02/06 02:48:38 jkh Exp $ + *      $Id: userconfig.c,v 1.18 1995/02/27 13:39:39 ugen Exp $   */  #include <sys/param.h> @@ -48,6 +48,8 @@  #include <i386/isa/isa_device.h> +#include <scsi/scsiconf.h> +  #define PARM_DEVSPEC	0x1  #define PARM_INT	0x2  #define PARM_ADDR	0x3 @@ -74,6 +76,7 @@ typedef struct _cmd {      CmdParm *parms;  } Cmd; +static void lsscsi(void);  static void lsdevtab(struct isa_device *);  static struct isa_device *find_device(char *, int);  static struct isa_device *search_devtable(struct isa_device *, char *, int); @@ -82,6 +85,7 @@ static Cmd *parse_cmd(char *);  static int parse_args(char *, CmdParm *);  unsigned long strtoul(const char *, char **, int); +static int list_scsi(CmdParm *);  static int list_devices(CmdParm *);  static int set_device_ioaddr(CmdParm *);  static int set_device_irq(CmdParm *); @@ -131,6 +135,7 @@ static Cmd CmdList[] = {      { "po",	set_device_ioaddr,	int_parms },	/* port dev addr */      { "pr",	device_probe,		dev_parms },	/* probe dev */      { "q", 	quitfunc, 		NULL },		/* quit		*/ +    { "s",	list_scsi,		NULL },		/* scsi */      { NULL,	NULL,			NULL },  }; @@ -557,3 +562,78 @@ strtoul(nptr, endptr, base)  		*endptr = (char *)(any ? s - 1 : nptr);  	return (acc);  } + +/* scsi: Support for displaying configured SCSI devices. + * There is no way to edit them, and this is inconsistent + * with the ISA method.  This is here as a basis for further work. + */ +static char * +type_text(char *name)	/* XXX: This is bogus */ +{ +	if (strcmp(name, "sd") == 0) +		return "disk"; + +	if (strcmp(name, "st") == 0) +		return "tape"; + +	return "device"; +} + +static void +id_put(char *desc, int id) +{ +    if (id != SCCONF_UNSPEC) +    { +    	if (desc) +	    printf("%s", desc); + +    	if (id == SCCONF_ANY) +	    printf("?"); +        else +	    printf("%d", id); +    } +} + +static void +lsscsi(void) +{ +    int i; + +    printf("scsi: (can't be edited):\n"); + +    for (i = 0; scsi_cinit[i].driver; i++) +    { +	id_put("controller scbus", scsi_cinit[i].bus); + +	if (scsi_cinit[i].unit != -1) +	{ +	    printf(" at "); +	    id_put(scsi_cinit[i].driver, scsi_cinit[i].unit); +	} + +	printf("\n"); +    } + +    for (i = 0; scsi_dinit[i].name; i++) +    { +		printf("%s ", type_text(scsi_dinit[i].name)); + +		id_put(scsi_dinit[i].name, scsi_dinit[i].unit); +		id_put(" at scbus", scsi_dinit[i].cunit); +		id_put(" target ", scsi_dinit[i].target); +		id_put(" lun ", scsi_dinit[i].lun); + +		if (scsi_dinit[i].flags) +	    	printf("flags 0x%x\n", scsi_dinit[i].flags); + +		printf("\n"); +    } +} + +static int +list_scsi(CmdParm *parms) +{ +    lineno = 0; +    lsscsi(); +    return 0; +} | 
