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