xref: /original-bsd/usr.bin/vmstat/names.c (revision 860e07fc)
1 /*-
2  * Copyright (c) 1991 The Regents of the University of California.
3  * All rights reserved.
4  *
5  * %sccs.include.redist.c%
6  *
7  *	@(#)names.c	5.7 (Berkeley) 09/02/92
8  */
9 
10 #if !defined(hp300) && !defined(tahoe) && !defined(vax) && !defined(luna68k)
11 char *defdrives[] = { 0 };
12 #endif
13 
14 #if defined(hp300) || defined(luna68k)
15 #if defined(hp300)
16 #include <hp/dev/device.h>
17 #else
18 #include <luna68k/dev/device.h>
19 #endif
20 
21 char *defdrives[] = { "sd0", "sd1", "sd2", "rd0", "rd1", "rd2", 0 };
22 
23 int
24 read_names()
25 {
26 	register char *p;
27 	register u_long hp;
28 	static char buf[BUFSIZ];
29 	struct hp_device hdev;
30 	struct driver hdrv;
31 	char name[10];
32 
33 	hp = namelist[X_HPDINIT].n_value;
34 	if (hp == 0) {
35 		(void)fprintf(stderr,
36 		    "disk init info not in namelist\n");
37 		return (0);
38 	}
39 	p = buf;
40 	for (;; hp += sizeof hdev) {
41 		(void)kvm_read(kd, hp, &hdev, sizeof hdev);
42 		if (hdev.hp_driver == 0)
43 			break;
44 		if (hdev.hp_dk < 0 || hdev.hp_alive == 0 ||
45 		    hdev.hp_cdriver == 0)
46 			continue;
47 		(void)kvm_read(kd, (u_long)hdev.hp_driver, &hdrv, sizeof hdrv);
48 		(void)kvm_read(kd, (u_long)hdrv.d_name, name, sizeof name);
49 		dr_name[hdev.hp_dk] = p;
50 		p += sprintf(p, "%s%d", name, hdev.hp_unit) + 1;
51 	}
52 	return (1);
53 }
54 #endif /* hp300 || luna68k */
55 
56 #ifdef tahoe
57 #include <tahoe/vba/vbavar.h>
58 
59 char *defdrives[] = { "dk0", "dk1", "dk2", 0 };
60 
61 int
62 read_names()
63 {
64 	register char *p;
65 	struct vba_device udev, *up;
66 	struct vba_driver udrv;
67 	char name[10];
68 	static char buf[BUFSIZ];
69 
70 	up = (struct vba_device *)namelist[X_VBDINIT].n_value;
71 	if (up == 0) {
72 		(void) fprintf(stderr,
73 		    "disk init info not in namelist\n");
74 		return (0);
75 	}
76 	p = buf;
77 	for (;; up += sizeof udev) {
78 		(void)kvm_read(kd, up, &udev, sizeof udev);
79 		if (udev.ui_driver == 0)
80 			break;
81 		if (udev.ui_dk < 0 || udev.ui_alive == 0)
82 			continue;
83 		(void)kvm_read(kd, udev.ui_driver, &udrv, sizeof udrv);
84 		(void)kvm_read(kd, udrv.ud_dname, name, sizeof name);
85 		dr_name[udev.ui_dk] = p;
86 		p += sprintf(p, "%s%d", name, udev.ui_unit);
87 	}
88 	return (1);
89 }
90 #endif /* tahoe */
91 
92 #ifdef vax
93 #include <vax/uba/ubavar.h>
94 #include <vax/mba/mbavar.h>
95 
96 char *defdrives[] = { "hp0", "hp1", "hp2", 0 };
97 
98 int
99 read_names()
100 {
101 	register char *p;
102 	unsigned long mp, up;
103 	struct mba_device mdev;
104 	struct mba_driver mdrv;
105 	struct uba_device udev;
106 	struct uba_driver udrv;
107 	char name[10];
108 	static char buf[BUFSIZ];
109 
110 	mp = namelist[X_MBDINIT].n_value;
111 	up = namelist[X_UBDINIT].n_value;
112 	if (mp == 0 && up == 0) {
113 		(void)fprintf(stderr,
114 		    "disk init info not in namelist\n");
115 		return (0);
116 	}
117 	p = buf;
118 	if (mp)
119 		for (;; mp += sizeof mdev) {
120 			(void)kvm_read(kd, mp, &mdev, sizeof mdev);
121 			if (mdev.mi_driver == 0)
122 				break;
123 			if (mdev.mi_dk < 0 || mdev.mi_alive == 0)
124 				continue;
125 			(void)kvm_read(kd, mdev.mi_driver, &mdrv, sizeof mdrv);
126 			(void)kvm_rea(kd, mdrv.md_dname, name, sizeof name);
127 			dr_name[mdev.mi_dk] = p;
128 			p += sprintf(p, "%s%d", name, mdev.mi_unit);
129 		}
130 	if (up)
131 		for (;; up += sizeof udev) {
132 			(void)kvm_read(kd, up, &udev, sizeof udev);
133 			if (udev.ui_driver == 0)
134 				break;
135 			if (udev.ui_dk < 0 || udev.ui_alive == 0)
136 				continue;
137 			(void)kvm_read(kd, udev.ui_driver, &udrv, sizeof udrv);
138 			(void)kvm_read(kd, udrv.ud_dname, name, sizeof name);
139 			dr_name[udev.ui_dk] = p;
140 			p += sprintf(p, "%s%d", name, udev.ui_unit);
141 		}
142 	return (1);
143 }
144 #endif /* vax */
145 
146 #ifdef sun
147 #include <sundev/mbvar.h>
148 
149 int
150 read_names()
151 {
152 	static int once = 0;
153 	struct mb_device mdev;
154 	struct mb_driver mdrv;
155 	short two_char;
156 	char *cp = (char *) &two_char;
157 	register struct mb_device *mp;
158 
159 	mp = (struct mb_device *)namelist[X_MBDINIT].n_value;
160 	if (mp == 0) {
161 		(void)fprintf(stderr,
162 		    "disk init info not in namelist\n");
163 		return (0);
164 	}
165 	for (;; ++mp) {
166 		(void)kvm_read(kd, mp++, &mdev, sizeof(mdev));
167 		if (mdev.md_driver == 0)
168 			break;
169 		if (mdev.md_dk < 0 || mdev.md_alive == 0)
170 			continue;
171 		(void)kvm_read(kd, mdev.md_driver, &mdrv, sizeof(mdrv));
172 		(void)kvm_read(kd, mdrv.mdr_dname, &two_char, sizeof(two_char));
173 		(void)sprintf(dr_name[mdev.md_dk],
174 		    "%c%c%d", cp[0], cp[1], mdev.md_unit);
175 	}
176 	return(1);
177 }
178 #endif /* sun */
179