148571Sbostic /*- 248571Sbostic * Copyright (c) 1991 The Regents of the University of California. 348571Sbostic * All rights reserved. 448571Sbostic * 548571Sbostic * %sccs.include.redist.c% 648571Sbostic * 7*56175Sbostic * @(#)names.c 5.6 (Berkeley) 09/02/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 1955663Sbostic 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 29*56175Sbostic hp = namelist[X_HPDINIT].n_value; 3048571Sbostic if (hp == 0) { 3155663Sbostic (void)fprintf(stderr, 3255663Sbostic "disk init info not in namelist\n"); 3355663Sbostic 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 } 4855663Sbostic 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 5755663Sbostic 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 66*56175Sbostic up = (struct vba_device *)namelist[X_VBDINIT].n_value; 6748571Sbostic if (up == 0) { 6848571Sbostic (void) fprintf(stderr, 6955663Sbostic "disk init info not in namelist\n"); 7055663Sbostic 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 } 8455663Sbostic 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 9455663Sbostic 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 106*56175Sbostic mp = namelist[X_MBDINIT].n_value; 107*56175Sbostic up = namelist[X_UBDINIT].n_value; 10848571Sbostic if (mp == 0 && up == 0) { 10955663Sbostic (void)fprintf(stderr, 11055663Sbostic "disk init info not in namelist\n"); 11155663Sbostic return (0); 11248571Sbostic } 11348571Sbostic p = buf; 11455663Sbostic if (mp) 11555663Sbostic for (;; mp += sizeof mdev) { 11655663Sbostic (void)kvm_read(kd, mp, &mdev, sizeof mdev); 11755663Sbostic if (mdev.mi_driver == 0) 11855663Sbostic break; 11955663Sbostic if (mdev.mi_dk < 0 || mdev.mi_alive == 0) 12055663Sbostic continue; 12155663Sbostic (void)kvm_read(kd, mdev.mi_driver, &mdrv, sizeof mdrv); 12255663Sbostic (void)kvm_rea(kd, mdrv.md_dname, name, sizeof name); 12355663Sbostic dr_name[mdev.mi_dk] = p; 12455663Sbostic p += sprintf(p, "%s%d", name, mdev.mi_unit); 12555663Sbostic } 12655663Sbostic if (up) 12755663Sbostic for (;; up += sizeof udev) { 12855663Sbostic (void)kvm_read(kd, up, &udev, sizeof udev); 12955663Sbostic if (udev.ui_driver == 0) 13055663Sbostic break; 13155663Sbostic if (udev.ui_dk < 0 || udev.ui_alive == 0) 13255663Sbostic continue; 13355663Sbostic (void)kvm_read(kd, udev.ui_driver, &udrv, sizeof udrv); 13455663Sbostic (void)kvm_read(kd, udrv.ud_dname, name, sizeof name); 13555663Sbostic dr_name[udev.ui_dk] = p; 13655663Sbostic p += sprintf(p, "%s%d", name, udev.ui_unit); 13755663Sbostic } 13855663Sbostic return (1); 13955663Sbostic } 14055663Sbostic #endif /* vax */ 14155663Sbostic 14255663Sbostic #ifdef sun 14355663Sbostic #include <sundev/mbvar.h> 14455663Sbostic 14555663Sbostic int 14655663Sbostic read_names() 14755663Sbostic { 14855663Sbostic static int once = 0; 14955663Sbostic struct mb_device mdev; 15055663Sbostic struct mb_driver mdrv; 15155663Sbostic short two_char; 15255663Sbostic char *cp = (char *) &two_char; 15355663Sbostic register struct mb_device *mp; 15455663Sbostic 155*56175Sbostic mp = (struct mb_device *)namelist[X_MBDINIT].n_value; 15655663Sbostic if (mp == 0) { 15755663Sbostic (void)fprintf(stderr, 15855663Sbostic "disk init info not in namelist\n"); 15955663Sbostic return (0); 16048571Sbostic } 16155663Sbostic for (;; ++mp) { 16255663Sbostic (void)kvm_read(kd, mp++, &mdev, sizeof(mdev)); 16355663Sbostic if (mdev.md_driver == 0) 16448571Sbostic break; 16555663Sbostic if (mdev.md_dk < 0 || mdev.md_alive == 0) 16648571Sbostic continue; 16755663Sbostic (void)kvm_read(kd, mdev.md_driver, &mdrv, sizeof(mdrv)); 16855663Sbostic (void)kvm_read(kd, mdrv.mdr_dname, &two_char, sizeof(two_char)); 16955663Sbostic (void)sprintf(dr_name[mdev.md_dk], 17055663Sbostic "%c%c%d", cp[0], cp[1], mdev.md_unit); 17148571Sbostic } 17255663Sbostic return(1); 17348571Sbostic } 17455663Sbostic #endif /* sun */ 175