148571Sbostic /*- 248571Sbostic * Copyright (c) 1991 The Regents of the University of California. 348571Sbostic * All rights reserved. 448571Sbostic * 548571Sbostic * %sccs.include.redist.c% 648571Sbostic * 7*55663Sbostic * @(#)names.c 5.5 (Berkeley) 07/24/92 848571Sbostic */ 948571Sbostic 1048571Sbostic #if !defined(hp300) && !defined(tahoe) && !defined(vax) 1148571Sbostic char *defdrives[] = { 0 }; 1248571Sbostic #endif 1348571Sbostic 1448571Sbostic #ifdef hp300 1554025Sbostic #include <hp/dev/device.h> 1648571Sbostic 1750003Skarels char *defdrives[] = { "sd0", "sd1", "sd2", "rd0", "rd1", "rd2", 0 }; 1848571Sbostic 19*55663Sbostic int 2048571Sbostic read_names() 2148571Sbostic { 2248571Sbostic register char *p; 2348571Sbostic register u_long hp; 2448571Sbostic static char buf[BUFSIZ]; 2548571Sbostic struct hp_device hdev; 2648571Sbostic struct driver hdrv; 2748571Sbostic char name[10]; 2848571Sbostic 2948571Sbostic hp = nl[X_HPDINIT].n_value; 3048571Sbostic if (hp == 0) { 31*55663Sbostic (void)fprintf(stderr, 32*55663Sbostic "disk init info not in namelist\n"); 33*55663Sbostic return (0); 3448571Sbostic } 3548571Sbostic p = buf; 3648571Sbostic for (;; hp += sizeof hdev) { 3754271Smccanne (void)kvm_read(kd, hp, &hdev, sizeof hdev); 3848571Sbostic if (hdev.hp_driver == 0) 3948571Sbostic break; 4050003Skarels if (hdev.hp_dk < 0 || hdev.hp_alive == 0 || 4150003Skarels hdev.hp_cdriver == 0) 4248571Sbostic continue; 4354271Smccanne (void)kvm_read(kd, (u_long)hdev.hp_driver, &hdrv, sizeof hdrv); 4454271Smccanne (void)kvm_read(kd, (u_long)hdrv.d_name, name, sizeof name); 4548571Sbostic dr_name[hdev.hp_dk] = p; 4650003Skarels p += sprintf(p, "%s%d", name, hdev.hp_unit) + 1; 4748571Sbostic } 48*55663Sbostic return (1); 4948571Sbostic } 5048571Sbostic #endif /* hp300 */ 5148571Sbostic 5248571Sbostic #ifdef tahoe 5348571Sbostic #include <tahoe/vba/vbavar.h> 5448571Sbostic 5548571Sbostic char *defdrives[] = { "dk0", "dk1", "dk2", 0 }; 5648571Sbostic 57*55663Sbostic int 5848571Sbostic read_names() 5948571Sbostic { 6048571Sbostic register char *p; 6148571Sbostic struct vba_device udev, *up; 6248571Sbostic struct vba_driver udrv; 6348571Sbostic char name[10]; 6448571Sbostic static char buf[BUFSIZ]; 6548571Sbostic 6648571Sbostic up = (struct vba_device *) nl[X_VBDINIT].n_value; 6748571Sbostic if (up == 0) { 6848571Sbostic (void) fprintf(stderr, 69*55663Sbostic "disk init info not in namelist\n"); 70*55663Sbostic return (0); 7148571Sbostic } 7248571Sbostic p = buf; 7348571Sbostic for (;; up += sizeof udev) { 7454271Smccanne (void)kvm_read(kd, up, &udev, sizeof udev); 7548571Sbostic if (udev.ui_driver == 0) 7648571Sbostic break; 7748571Sbostic if (udev.ui_dk < 0 || udev.ui_alive == 0) 7848571Sbostic continue; 7954271Smccanne (void)kvm_read(kd, udev.ui_driver, &udrv, sizeof udrv); 8054271Smccanne (void)kvm_read(kd, udrv.ud_dname, name, sizeof name); 8148571Sbostic dr_name[udev.ui_dk] = p; 8248571Sbostic p += sprintf(p, "%s%d", name, udev.ui_unit); 8348571Sbostic } 84*55663Sbostic return (1); 8548571Sbostic } 8648571Sbostic #endif /* tahoe */ 8748571Sbostic 8848571Sbostic #ifdef vax 8948571Sbostic #include <vax/uba/ubavar.h> 9048571Sbostic #include <vax/mba/mbavar.h> 9148571Sbostic 9248571Sbostic char *defdrives[] = { "hp0", "hp1", "hp2", 0 }; 9348571Sbostic 94*55663Sbostic int 9548571Sbostic read_names() 9648571Sbostic { 9748571Sbostic register char *p; 9848571Sbostic unsigned long mp, up; 9948571Sbostic struct mba_device mdev; 10048571Sbostic struct mba_driver mdrv; 10148571Sbostic struct uba_device udev; 10248571Sbostic struct uba_driver udrv; 10348571Sbostic char name[10]; 10448571Sbostic static char buf[BUFSIZ]; 10548571Sbostic 10648571Sbostic mp = nl[X_MBDINIT].n_value; 10748571Sbostic up = nl[X_UBDINIT].n_value; 10848571Sbostic if (mp == 0 && up == 0) { 109*55663Sbostic (void)fprintf(stderr, 110*55663Sbostic "disk init info not in namelist\n"); 111*55663Sbostic return (0); 11248571Sbostic } 11348571Sbostic p = buf; 114*55663Sbostic if (mp) 115*55663Sbostic for (;; mp += sizeof mdev) { 116*55663Sbostic (void)kvm_read(kd, mp, &mdev, sizeof mdev); 117*55663Sbostic if (mdev.mi_driver == 0) 118*55663Sbostic break; 119*55663Sbostic if (mdev.mi_dk < 0 || mdev.mi_alive == 0) 120*55663Sbostic continue; 121*55663Sbostic (void)kvm_read(kd, mdev.mi_driver, &mdrv, sizeof mdrv); 122*55663Sbostic (void)kvm_rea(kd, mdrv.md_dname, name, sizeof name); 123*55663Sbostic dr_name[mdev.mi_dk] = p; 124*55663Sbostic p += sprintf(p, "%s%d", name, mdev.mi_unit); 125*55663Sbostic } 126*55663Sbostic if (up) 127*55663Sbostic for (;; up += sizeof udev) { 128*55663Sbostic (void)kvm_read(kd, up, &udev, sizeof udev); 129*55663Sbostic if (udev.ui_driver == 0) 130*55663Sbostic break; 131*55663Sbostic if (udev.ui_dk < 0 || udev.ui_alive == 0) 132*55663Sbostic continue; 133*55663Sbostic (void)kvm_read(kd, udev.ui_driver, &udrv, sizeof udrv); 134*55663Sbostic (void)kvm_read(kd, udrv.ud_dname, name, sizeof name); 135*55663Sbostic dr_name[udev.ui_dk] = p; 136*55663Sbostic p += sprintf(p, "%s%d", name, udev.ui_unit); 137*55663Sbostic } 138*55663Sbostic return (1); 139*55663Sbostic } 140*55663Sbostic #endif /* vax */ 141*55663Sbostic 142*55663Sbostic #ifdef sun 143*55663Sbostic #include <sundev/mbvar.h> 144*55663Sbostic 145*55663Sbostic int 146*55663Sbostic read_names() 147*55663Sbostic { 148*55663Sbostic static int once = 0; 149*55663Sbostic struct mb_device mdev; 150*55663Sbostic struct mb_driver mdrv; 151*55663Sbostic short two_char; 152*55663Sbostic char *cp = (char *) &two_char; 153*55663Sbostic register struct mb_device *mp; 154*55663Sbostic 155*55663Sbostic mp = (struct mb_device *)nl[X_MBDINIT].n_value; 156*55663Sbostic if (mp == 0) { 157*55663Sbostic (void)fprintf(stderr, 158*55663Sbostic "disk init info not in namelist\n"); 159*55663Sbostic return (0); 16048571Sbostic } 161*55663Sbostic for (;; ++mp) { 162*55663Sbostic (void)kvm_read(kd, mp++, &mdev, sizeof(mdev)); 163*55663Sbostic if (mdev.md_driver == 0) 16448571Sbostic break; 165*55663Sbostic if (mdev.md_dk < 0 || mdev.md_alive == 0) 16648571Sbostic continue; 167*55663Sbostic (void)kvm_read(kd, mdev.md_driver, &mdrv, sizeof(mdrv)); 168*55663Sbostic (void)kvm_read(kd, mdrv.mdr_dname, &two_char, sizeof(two_char)); 169*55663Sbostic (void)sprintf(dr_name[mdev.md_dk], 170*55663Sbostic "%c%c%d", cp[0], cp[1], mdev.md_unit); 17148571Sbostic } 172*55663Sbostic return(1); 17348571Sbostic } 174*55663Sbostic #endif /* sun */ 175