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