148571Sbostic /*- 248571Sbostic * Copyright (c) 1991 The Regents of the University of California. 348571Sbostic * All rights reserved. 448571Sbostic * 548571Sbostic * %sccs.include.redist.c% 648571Sbostic * 7*56176Sbostic * @(#)names.c 5.7 (Berkeley) 09/02/92 848571Sbostic */ 948571Sbostic 10*56176Sbostic #if !defined(hp300) && !defined(tahoe) && !defined(vax) && !defined(luna68k) 1148571Sbostic char *defdrives[] = { 0 }; 1248571Sbostic #endif 1348571Sbostic 14*56176Sbostic #if defined(hp300) || defined(luna68k) 15*56176Sbostic #if defined(hp300) 1654025Sbostic #include <hp/dev/device.h> 17*56176Sbostic #else 18*56176Sbostic #include <luna68k/dev/device.h> 19*56176Sbostic #endif 2048571Sbostic 2150003Skarels char *defdrives[] = { "sd0", "sd1", "sd2", "rd0", "rd1", "rd2", 0 }; 2248571Sbostic 2355663Sbostic int 2448571Sbostic read_names() 2548571Sbostic { 2648571Sbostic register char *p; 2748571Sbostic register u_long hp; 2848571Sbostic static char buf[BUFSIZ]; 2948571Sbostic struct hp_device hdev; 3048571Sbostic struct driver hdrv; 3148571Sbostic char name[10]; 3248571Sbostic 3356175Sbostic hp = namelist[X_HPDINIT].n_value; 3448571Sbostic if (hp == 0) { 3555663Sbostic (void)fprintf(stderr, 3655663Sbostic "disk init info not in namelist\n"); 3755663Sbostic return (0); 3848571Sbostic } 3948571Sbostic p = buf; 4048571Sbostic for (;; hp += sizeof hdev) { 4154271Smccanne (void)kvm_read(kd, hp, &hdev, sizeof hdev); 4248571Sbostic if (hdev.hp_driver == 0) 4348571Sbostic break; 4450003Skarels if (hdev.hp_dk < 0 || hdev.hp_alive == 0 || 4550003Skarels hdev.hp_cdriver == 0) 4648571Sbostic continue; 4754271Smccanne (void)kvm_read(kd, (u_long)hdev.hp_driver, &hdrv, sizeof hdrv); 4854271Smccanne (void)kvm_read(kd, (u_long)hdrv.d_name, name, sizeof name); 4948571Sbostic dr_name[hdev.hp_dk] = p; 5050003Skarels p += sprintf(p, "%s%d", name, hdev.hp_unit) + 1; 5148571Sbostic } 5255663Sbostic return (1); 5348571Sbostic } 54*56176Sbostic #endif /* hp300 || luna68k */ 5548571Sbostic 5648571Sbostic #ifdef tahoe 5748571Sbostic #include <tahoe/vba/vbavar.h> 5848571Sbostic 5948571Sbostic char *defdrives[] = { "dk0", "dk1", "dk2", 0 }; 6048571Sbostic 6155663Sbostic int 6248571Sbostic read_names() 6348571Sbostic { 6448571Sbostic register char *p; 6548571Sbostic struct vba_device udev, *up; 6648571Sbostic struct vba_driver udrv; 6748571Sbostic char name[10]; 6848571Sbostic static char buf[BUFSIZ]; 6948571Sbostic 7056175Sbostic up = (struct vba_device *)namelist[X_VBDINIT].n_value; 7148571Sbostic if (up == 0) { 7248571Sbostic (void) fprintf(stderr, 7355663Sbostic "disk init info not in namelist\n"); 7455663Sbostic return (0); 7548571Sbostic } 7648571Sbostic p = buf; 7748571Sbostic for (;; up += sizeof udev) { 7854271Smccanne (void)kvm_read(kd, up, &udev, sizeof udev); 7948571Sbostic if (udev.ui_driver == 0) 8048571Sbostic break; 8148571Sbostic if (udev.ui_dk < 0 || udev.ui_alive == 0) 8248571Sbostic continue; 8354271Smccanne (void)kvm_read(kd, udev.ui_driver, &udrv, sizeof udrv); 8454271Smccanne (void)kvm_read(kd, udrv.ud_dname, name, sizeof name); 8548571Sbostic dr_name[udev.ui_dk] = p; 8648571Sbostic p += sprintf(p, "%s%d", name, udev.ui_unit); 8748571Sbostic } 8855663Sbostic return (1); 8948571Sbostic } 9048571Sbostic #endif /* tahoe */ 9148571Sbostic 9248571Sbostic #ifdef vax 9348571Sbostic #include <vax/uba/ubavar.h> 9448571Sbostic #include <vax/mba/mbavar.h> 9548571Sbostic 9648571Sbostic char *defdrives[] = { "hp0", "hp1", "hp2", 0 }; 9748571Sbostic 9855663Sbostic int 9948571Sbostic read_names() 10048571Sbostic { 10148571Sbostic register char *p; 10248571Sbostic unsigned long mp, up; 10348571Sbostic struct mba_device mdev; 10448571Sbostic struct mba_driver mdrv; 10548571Sbostic struct uba_device udev; 10648571Sbostic struct uba_driver udrv; 10748571Sbostic char name[10]; 10848571Sbostic static char buf[BUFSIZ]; 10948571Sbostic 11056175Sbostic mp = namelist[X_MBDINIT].n_value; 11156175Sbostic up = namelist[X_UBDINIT].n_value; 11248571Sbostic if (mp == 0 && up == 0) { 11355663Sbostic (void)fprintf(stderr, 11455663Sbostic "disk init info not in namelist\n"); 11555663Sbostic return (0); 11648571Sbostic } 11748571Sbostic p = buf; 11855663Sbostic if (mp) 11955663Sbostic for (;; mp += sizeof mdev) { 12055663Sbostic (void)kvm_read(kd, mp, &mdev, sizeof mdev); 12155663Sbostic if (mdev.mi_driver == 0) 12255663Sbostic break; 12355663Sbostic if (mdev.mi_dk < 0 || mdev.mi_alive == 0) 12455663Sbostic continue; 12555663Sbostic (void)kvm_read(kd, mdev.mi_driver, &mdrv, sizeof mdrv); 12655663Sbostic (void)kvm_rea(kd, mdrv.md_dname, name, sizeof name); 12755663Sbostic dr_name[mdev.mi_dk] = p; 12855663Sbostic p += sprintf(p, "%s%d", name, mdev.mi_unit); 12955663Sbostic } 13055663Sbostic if (up) 13155663Sbostic for (;; up += sizeof udev) { 13255663Sbostic (void)kvm_read(kd, up, &udev, sizeof udev); 13355663Sbostic if (udev.ui_driver == 0) 13455663Sbostic break; 13555663Sbostic if (udev.ui_dk < 0 || udev.ui_alive == 0) 13655663Sbostic continue; 13755663Sbostic (void)kvm_read(kd, udev.ui_driver, &udrv, sizeof udrv); 13855663Sbostic (void)kvm_read(kd, udrv.ud_dname, name, sizeof name); 13955663Sbostic dr_name[udev.ui_dk] = p; 14055663Sbostic p += sprintf(p, "%s%d", name, udev.ui_unit); 14155663Sbostic } 14255663Sbostic return (1); 14355663Sbostic } 14455663Sbostic #endif /* vax */ 14555663Sbostic 14655663Sbostic #ifdef sun 14755663Sbostic #include <sundev/mbvar.h> 14855663Sbostic 14955663Sbostic int 15055663Sbostic read_names() 15155663Sbostic { 15255663Sbostic static int once = 0; 15355663Sbostic struct mb_device mdev; 15455663Sbostic struct mb_driver mdrv; 15555663Sbostic short two_char; 15655663Sbostic char *cp = (char *) &two_char; 15755663Sbostic register struct mb_device *mp; 15855663Sbostic 15956175Sbostic mp = (struct mb_device *)namelist[X_MBDINIT].n_value; 16055663Sbostic if (mp == 0) { 16155663Sbostic (void)fprintf(stderr, 16255663Sbostic "disk init info not in namelist\n"); 16355663Sbostic return (0); 16448571Sbostic } 16555663Sbostic for (;; ++mp) { 16655663Sbostic (void)kvm_read(kd, mp++, &mdev, sizeof(mdev)); 16755663Sbostic if (mdev.md_driver == 0) 16848571Sbostic break; 16955663Sbostic if (mdev.md_dk < 0 || mdev.md_alive == 0) 17048571Sbostic continue; 17155663Sbostic (void)kvm_read(kd, mdev.md_driver, &mdrv, sizeof(mdrv)); 17255663Sbostic (void)kvm_read(kd, mdrv.mdr_dname, &two_char, sizeof(two_char)); 17355663Sbostic (void)sprintf(dr_name[mdev.md_dk], 17455663Sbostic "%c%c%d", cp[0], cp[1], mdev.md_unit); 17548571Sbostic } 17655663Sbostic return(1); 17748571Sbostic } 17855663Sbostic #endif /* sun */ 179