xref: /csrg-svn/usr.bin/vmstat/names.c (revision 56176)
148571Sbostic /*-
248571Sbostic  * Copyright (c) 1991 The Regents of the University of California.
348571Sbostic  * All rights reserved.
448571Sbostic  *
548571Sbostic  * %sccs.include.redist.c%
648571Sbostic  *
7*56176Sbostic  *	@(#)names.c	5.7 (Berkeley) 09/02/92
848571Sbostic  */
948571Sbostic 
10*56176Sbostic #if !defined(hp300) && !defined(tahoe) && !defined(vax) && !defined(luna68k)
1148571Sbostic char *defdrives[] = { 0 };
1248571Sbostic #endif
1348571Sbostic 
14*56176Sbostic #if defined(hp300) || defined(luna68k)
15*56176Sbostic #if defined(hp300)
1654025Sbostic #include <hp/dev/device.h>
17*56176Sbostic #else
18*56176Sbostic #include <luna68k/dev/device.h>
19*56176Sbostic #endif
2048571Sbostic 
2150003Skarels char *defdrives[] = { "sd0", "sd1", "sd2", "rd0", "rd1", "rd2", 0 };
2248571Sbostic 
2355663Sbostic int
2448571Sbostic read_names()
2548571Sbostic {
2648571Sbostic 	register char *p;
2748571Sbostic 	register u_long hp;
2848571Sbostic 	static char buf[BUFSIZ];
2948571Sbostic 	struct hp_device hdev;
3048571Sbostic 	struct driver hdrv;
3148571Sbostic 	char name[10];
3248571Sbostic 
3356175Sbostic 	hp = namelist[X_HPDINIT].n_value;
3448571Sbostic 	if (hp == 0) {
3555663Sbostic 		(void)fprintf(stderr,
3655663Sbostic 		    "disk init info not in namelist\n");
3755663Sbostic 		return (0);
3848571Sbostic 	}
3948571Sbostic 	p = buf;
4048571Sbostic 	for (;; hp += sizeof hdev) {
4154271Smccanne 		(void)kvm_read(kd, hp, &hdev, sizeof hdev);
4248571Sbostic 		if (hdev.hp_driver == 0)
4348571Sbostic 			break;
4450003Skarels 		if (hdev.hp_dk < 0 || hdev.hp_alive == 0 ||
4550003Skarels 		    hdev.hp_cdriver == 0)
4648571Sbostic 			continue;
4754271Smccanne 		(void)kvm_read(kd, (u_long)hdev.hp_driver, &hdrv, sizeof hdrv);
4854271Smccanne 		(void)kvm_read(kd, (u_long)hdrv.d_name, name, sizeof name);
4948571Sbostic 		dr_name[hdev.hp_dk] = p;
5050003Skarels 		p += sprintf(p, "%s%d", name, hdev.hp_unit) + 1;
5148571Sbostic 	}
5255663Sbostic 	return (1);
5348571Sbostic }
54*56176Sbostic #endif /* hp300 || luna68k */
5548571Sbostic 
5648571Sbostic #ifdef tahoe
5748571Sbostic #include <tahoe/vba/vbavar.h>
5848571Sbostic 
5948571Sbostic char *defdrives[] = { "dk0", "dk1", "dk2", 0 };
6048571Sbostic 
6155663Sbostic int
6248571Sbostic read_names()
6348571Sbostic {
6448571Sbostic 	register char *p;
6548571Sbostic 	struct vba_device udev, *up;
6648571Sbostic 	struct vba_driver udrv;
6748571Sbostic 	char name[10];
6848571Sbostic 	static char buf[BUFSIZ];
6948571Sbostic 
7056175Sbostic 	up = (struct vba_device *)namelist[X_VBDINIT].n_value;
7148571Sbostic 	if (up == 0) {
7248571Sbostic 		(void) fprintf(stderr,
7355663Sbostic 		    "disk init info not in namelist\n");
7455663Sbostic 		return (0);
7548571Sbostic 	}
7648571Sbostic 	p = buf;
7748571Sbostic 	for (;; up += sizeof udev) {
7854271Smccanne 		(void)kvm_read(kd, up, &udev, sizeof udev);
7948571Sbostic 		if (udev.ui_driver == 0)
8048571Sbostic 			break;
8148571Sbostic 		if (udev.ui_dk < 0 || udev.ui_alive == 0)
8248571Sbostic 			continue;
8354271Smccanne 		(void)kvm_read(kd, udev.ui_driver, &udrv, sizeof udrv);
8454271Smccanne 		(void)kvm_read(kd, udrv.ud_dname, name, sizeof name);
8548571Sbostic 		dr_name[udev.ui_dk] = p;
8648571Sbostic 		p += sprintf(p, "%s%d", name, udev.ui_unit);
8748571Sbostic 	}
8855663Sbostic 	return (1);
8948571Sbostic }
9048571Sbostic #endif /* tahoe */
9148571Sbostic 
9248571Sbostic #ifdef vax
9348571Sbostic #include <vax/uba/ubavar.h>
9448571Sbostic #include <vax/mba/mbavar.h>
9548571Sbostic 
9648571Sbostic char *defdrives[] = { "hp0", "hp1", "hp2", 0 };
9748571Sbostic 
9855663Sbostic int
9948571Sbostic read_names()
10048571Sbostic {
10148571Sbostic 	register char *p;
10248571Sbostic 	unsigned long mp, up;
10348571Sbostic 	struct mba_device mdev;
10448571Sbostic 	struct mba_driver mdrv;
10548571Sbostic 	struct uba_device udev;
10648571Sbostic 	struct uba_driver udrv;
10748571Sbostic 	char name[10];
10848571Sbostic 	static char buf[BUFSIZ];
10948571Sbostic 
11056175Sbostic 	mp = namelist[X_MBDINIT].n_value;
11156175Sbostic 	up = namelist[X_UBDINIT].n_value;
11248571Sbostic 	if (mp == 0 && up == 0) {
11355663Sbostic 		(void)fprintf(stderr,
11455663Sbostic 		    "disk init info not in namelist\n");
11555663Sbostic 		return (0);
11648571Sbostic 	}
11748571Sbostic 	p = buf;
11855663Sbostic 	if (mp)
11955663Sbostic 		for (;; mp += sizeof mdev) {
12055663Sbostic 			(void)kvm_read(kd, mp, &mdev, sizeof mdev);
12155663Sbostic 			if (mdev.mi_driver == 0)
12255663Sbostic 				break;
12355663Sbostic 			if (mdev.mi_dk < 0 || mdev.mi_alive == 0)
12455663Sbostic 				continue;
12555663Sbostic 			(void)kvm_read(kd, mdev.mi_driver, &mdrv, sizeof mdrv);
12655663Sbostic 			(void)kvm_rea(kd, mdrv.md_dname, name, sizeof name);
12755663Sbostic 			dr_name[mdev.mi_dk] = p;
12855663Sbostic 			p += sprintf(p, "%s%d", name, mdev.mi_unit);
12955663Sbostic 		}
13055663Sbostic 	if (up)
13155663Sbostic 		for (;; up += sizeof udev) {
13255663Sbostic 			(void)kvm_read(kd, up, &udev, sizeof udev);
13355663Sbostic 			if (udev.ui_driver == 0)
13455663Sbostic 				break;
13555663Sbostic 			if (udev.ui_dk < 0 || udev.ui_alive == 0)
13655663Sbostic 				continue;
13755663Sbostic 			(void)kvm_read(kd, udev.ui_driver, &udrv, sizeof udrv);
13855663Sbostic 			(void)kvm_read(kd, udrv.ud_dname, name, sizeof name);
13955663Sbostic 			dr_name[udev.ui_dk] = p;
14055663Sbostic 			p += sprintf(p, "%s%d", name, udev.ui_unit);
14155663Sbostic 		}
14255663Sbostic 	return (1);
14355663Sbostic }
14455663Sbostic #endif /* vax */
14555663Sbostic 
14655663Sbostic #ifdef sun
14755663Sbostic #include <sundev/mbvar.h>
14855663Sbostic 
14955663Sbostic int
15055663Sbostic read_names()
15155663Sbostic {
15255663Sbostic 	static int once = 0;
15355663Sbostic 	struct mb_device mdev;
15455663Sbostic 	struct mb_driver mdrv;
15555663Sbostic 	short two_char;
15655663Sbostic 	char *cp = (char *) &two_char;
15755663Sbostic 	register struct mb_device *mp;
15855663Sbostic 
15956175Sbostic 	mp = (struct mb_device *)namelist[X_MBDINIT].n_value;
16055663Sbostic 	if (mp == 0) {
16155663Sbostic 		(void)fprintf(stderr,
16255663Sbostic 		    "disk init info not in namelist\n");
16355663Sbostic 		return (0);
16448571Sbostic 	}
16555663Sbostic 	for (;; ++mp) {
16655663Sbostic 		(void)kvm_read(kd, mp++, &mdev, sizeof(mdev));
16755663Sbostic 		if (mdev.md_driver == 0)
16848571Sbostic 			break;
16955663Sbostic 		if (mdev.md_dk < 0 || mdev.md_alive == 0)
17048571Sbostic 			continue;
17155663Sbostic 		(void)kvm_read(kd, mdev.md_driver, &mdrv, sizeof(mdrv));
17255663Sbostic 		(void)kvm_read(kd, mdrv.mdr_dname, &two_char, sizeof(two_char));
17355663Sbostic 		(void)sprintf(dr_name[mdev.md_dk],
17455663Sbostic 		    "%c%c%d", cp[0], cp[1], mdev.md_unit);
17548571Sbostic 	}
17655663Sbostic 	return(1);
17748571Sbostic }
17855663Sbostic #endif /* sun */
179