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