xref: /csrg-svn/usr.bin/vmstat/names.c (revision 48571)
1*48571Sbostic /*-
2*48571Sbostic  * Copyright (c) 1991 The Regents of the University of California.
3*48571Sbostic  * All rights reserved.
4*48571Sbostic  *
5*48571Sbostic  * %sccs.include.redist.c%
6*48571Sbostic  *
7*48571Sbostic  *	@(#)names.c	5.1 (Berkeley) 04/23/91
8*48571Sbostic  */
9*48571Sbostic 
10*48571Sbostic #if !defined(hp300) && !defined(tahoe) && !defined(vax)
11*48571Sbostic char *defdrives[] = { 0 };
12*48571Sbostic #endif
13*48571Sbostic 
14*48571Sbostic #ifdef hp300
15*48571Sbostic #include <hp300/dev/device.h>
16*48571Sbostic 
17*48571Sbostic char *defdrives[] = { "rd0", "rd1", "rd2", 0 };
18*48571Sbostic 
19*48571Sbostic void
20*48571Sbostic read_names()
21*48571Sbostic {
22*48571Sbostic 	register char *p;
23*48571Sbostic 	register u_long hp;
24*48571Sbostic 	static char buf[BUFSIZ];
25*48571Sbostic 	struct hp_device hdev;
26*48571Sbostic 	struct driver hdrv;
27*48571Sbostic 	char name[10];
28*48571Sbostic 
29*48571Sbostic 	hp = nl[X_HPDINIT].n_value;
30*48571Sbostic 	if (hp == 0) {
31*48571Sbostic 		(void) fprintf(stderr,
32*48571Sbostic 		    "vmstat: disk init info not in namelist\n");
33*48571Sbostic 		exit(1);
34*48571Sbostic 	}
35*48571Sbostic 	p = buf;
36*48571Sbostic 	for (;; hp += sizeof hdev) {
37*48571Sbostic 		(void)kvm_read((void *)hp, &hdev, sizeof hdev);
38*48571Sbostic 		if (hdev.hp_driver == 0)
39*48571Sbostic 			break;
40*48571Sbostic 		if (hdev.hp_dk < 0 || hdev.hp_alive == 0)
41*48571Sbostic 			continue;
42*48571Sbostic 		(void)kvm_read(hdev.hp_driver, &hdrv, sizeof hdrv);
43*48571Sbostic 		(void)kvm_read(hdrv.d_name, name, sizeof name);
44*48571Sbostic 		dr_name[hdev.hp_dk] = p;
45*48571Sbostic 		p += sprintf(p, "%s%d", name, hdev.hp_unit);
46*48571Sbostic 	}
47*48571Sbostic }
48*48571Sbostic #endif /* hp300 */
49*48571Sbostic 
50*48571Sbostic #ifdef tahoe
51*48571Sbostic #include <tahoe/vba/vbavar.h>
52*48571Sbostic 
53*48571Sbostic char *defdrives[] = { "dk0", "dk1", "dk2", 0 };
54*48571Sbostic 
55*48571Sbostic void
56*48571Sbostic read_names()
57*48571Sbostic {
58*48571Sbostic 	register char *p;
59*48571Sbostic 	struct vba_device udev, *up;
60*48571Sbostic 	struct vba_driver udrv;
61*48571Sbostic 	char name[10];
62*48571Sbostic 	static char buf[BUFSIZ];
63*48571Sbostic 
64*48571Sbostic 	up = (struct vba_device *) nl[X_VBDINIT].n_value;
65*48571Sbostic 	if (up == 0) {
66*48571Sbostic 		(void) fprintf(stderr,
67*48571Sbostic 		    "vmstat: disk init info not in namelist\n");
68*48571Sbostic 		exit(1);
69*48571Sbostic 	}
70*48571Sbostic 	p = buf;
71*48571Sbostic 	for (;; up += sizeof udev) {
72*48571Sbostic 		(void)kvm_read(up, &udev, sizeof udev);
73*48571Sbostic 		if (udev.ui_driver == 0)
74*48571Sbostic 			break;
75*48571Sbostic 		if (udev.ui_dk < 0 || udev.ui_alive == 0)
76*48571Sbostic 			continue;
77*48571Sbostic 		(void)kvm_read(udev.ui_driver, &udrv, sizeof udrv);
78*48571Sbostic 		(void)kvm_read(udrv.ud_dname, name, sizeof name);
79*48571Sbostic 		dr_name[udev.ui_dk] = p;
80*48571Sbostic 		p += sprintf(p, "%s%d", name, udev.ui_unit);
81*48571Sbostic 	}
82*48571Sbostic }
83*48571Sbostic #endif /* tahoe */
84*48571Sbostic 
85*48571Sbostic #ifdef vax
86*48571Sbostic #include <vax/uba/ubavar.h>
87*48571Sbostic #include <vax/mba/mbavar.h>
88*48571Sbostic 
89*48571Sbostic char *defdrives[] = { "hp0", "hp1", "hp2", 0 };
90*48571Sbostic 
91*48571Sbostic void
92*48571Sbostic read_names()
93*48571Sbostic {
94*48571Sbostic 	register char *p;
95*48571Sbostic 	unsigned long mp, up;
96*48571Sbostic 	struct mba_device mdev;
97*48571Sbostic 	struct mba_driver mdrv;
98*48571Sbostic 	struct uba_device udev;
99*48571Sbostic 	struct uba_driver udrv;
100*48571Sbostic 	char name[10];
101*48571Sbostic 	static char buf[BUFSIZ];
102*48571Sbostic 
103*48571Sbostic 	mp = nl[X_MBDINIT].n_value;
104*48571Sbostic 	up = nl[X_UBDINIT].n_value;
105*48571Sbostic 	if (mp == 0 && up == 0) {
106*48571Sbostic 		(void) fprintf(stderr,
107*48571Sbostic 		    "vmstat: disk init info not in namelist\n");
108*48571Sbostic 		exit(1);
109*48571Sbostic 	}
110*48571Sbostic 	p = buf;
111*48571Sbostic 	if (mp) for (;; mp += sizeof mdev) {
112*48571Sbostic 		(void)kvm_read(mp, &mdev, sizeof mdev);
113*48571Sbostic 		if (mdev.mi_driver == 0)
114*48571Sbostic 			break;
115*48571Sbostic 		if (mdev.mi_dk < 0 || mdev.mi_alive == 0)
116*48571Sbostic 			continue;
117*48571Sbostic 		(void)kvm_read(mdev.mi_driver, &mdrv, sizeof mdrv);
118*48571Sbostic 		(void)kvm_read(mdrv.md_dname, name, sizeof name);
119*48571Sbostic 		dr_name[mdev.mi_dk] = p;
120*48571Sbostic 		p += sprintf(p, "%s%d", name, mdev.mi_unit);
121*48571Sbostic 	}
122*48571Sbostic 	if (up) for (;; up += sizeof udev) {
123*48571Sbostic 		(void)kvm_read(up, &udev, sizeof udev);
124*48571Sbostic 		if (udev.ui_driver == 0)
125*48571Sbostic 			break;
126*48571Sbostic 		if (udev.ui_dk < 0 || udev.ui_alive == 0)
127*48571Sbostic 			continue;
128*48571Sbostic 		(void)kvm_read(udev.ui_driver, &udrv, sizeof udrv);
129*48571Sbostic 		(void)kvm_read(udrv.ud_dname, name, sizeof name);
130*48571Sbostic 		dr_name[udev.ui_dk] = p;
131*48571Sbostic 		p += sprintf(p, "%s%d", name, udev.ui_unit);
132*48571Sbostic 	}
133*48571Sbostic }
134*48571Sbostic #endif /* vax */
135