148571Sbostic /*- 248571Sbostic * Copyright (c) 1991 The Regents of the University of California. 348571Sbostic * All rights reserved. 448571Sbostic * 548571Sbostic * %sccs.include.redist.c% 648571Sbostic * 7*58838Sralph * @(#)names.c 5.8 (Berkeley) 03/27/93 848571Sbostic */ 948571Sbostic 10*58838Sralph #if !defined(hp300) && !defined(tahoe) && !defined(vax) && \ 11*58838Sralph !defined(luna68k) && !defined(mips) 1248571Sbostic char *defdrives[] = { 0 }; 1348571Sbostic #endif 1448571Sbostic 1556176Sbostic #if defined(hp300) || defined(luna68k) 1656176Sbostic #if defined(hp300) 1754025Sbostic #include <hp/dev/device.h> 1856176Sbostic #else 1956176Sbostic #include <luna68k/dev/device.h> 2056176Sbostic #endif 2148571Sbostic 2250003Skarels char *defdrives[] = { "sd0", "sd1", "sd2", "rd0", "rd1", "rd2", 0 }; 2348571Sbostic 2455663Sbostic int 2548571Sbostic read_names() 2648571Sbostic { 2748571Sbostic register char *p; 2848571Sbostic register u_long hp; 2948571Sbostic static char buf[BUFSIZ]; 3048571Sbostic struct hp_device hdev; 3148571Sbostic struct driver hdrv; 3248571Sbostic char name[10]; 3348571Sbostic 3456175Sbostic hp = namelist[X_HPDINIT].n_value; 3548571Sbostic if (hp == 0) { 3655663Sbostic (void)fprintf(stderr, 3755663Sbostic "disk init info not in namelist\n"); 3855663Sbostic return (0); 3948571Sbostic } 4048571Sbostic p = buf; 4148571Sbostic for (;; hp += sizeof hdev) { 4254271Smccanne (void)kvm_read(kd, hp, &hdev, sizeof hdev); 4348571Sbostic if (hdev.hp_driver == 0) 4448571Sbostic break; 4550003Skarels if (hdev.hp_dk < 0 || hdev.hp_alive == 0 || 4650003Skarels hdev.hp_cdriver == 0) 4748571Sbostic continue; 4854271Smccanne (void)kvm_read(kd, (u_long)hdev.hp_driver, &hdrv, sizeof hdrv); 4954271Smccanne (void)kvm_read(kd, (u_long)hdrv.d_name, name, sizeof name); 5048571Sbostic dr_name[hdev.hp_dk] = p; 5150003Skarels p += sprintf(p, "%s%d", name, hdev.hp_unit) + 1; 5248571Sbostic } 5355663Sbostic return (1); 5448571Sbostic } 5556176Sbostic #endif /* hp300 || luna68k */ 5648571Sbostic 5748571Sbostic #ifdef tahoe 5848571Sbostic #include <tahoe/vba/vbavar.h> 5948571Sbostic 6048571Sbostic char *defdrives[] = { "dk0", "dk1", "dk2", 0 }; 6148571Sbostic 6255663Sbostic int 6348571Sbostic read_names() 6448571Sbostic { 6548571Sbostic register char *p; 6648571Sbostic struct vba_device udev, *up; 6748571Sbostic struct vba_driver udrv; 6848571Sbostic char name[10]; 6948571Sbostic static char buf[BUFSIZ]; 7048571Sbostic 7156175Sbostic up = (struct vba_device *)namelist[X_VBDINIT].n_value; 7248571Sbostic if (up == 0) { 7348571Sbostic (void) fprintf(stderr, 7455663Sbostic "disk init info not in namelist\n"); 7555663Sbostic return (0); 7648571Sbostic } 7748571Sbostic p = buf; 7848571Sbostic for (;; up += sizeof udev) { 7954271Smccanne (void)kvm_read(kd, up, &udev, sizeof udev); 8048571Sbostic if (udev.ui_driver == 0) 8148571Sbostic break; 8248571Sbostic if (udev.ui_dk < 0 || udev.ui_alive == 0) 8348571Sbostic continue; 8454271Smccanne (void)kvm_read(kd, udev.ui_driver, &udrv, sizeof udrv); 8554271Smccanne (void)kvm_read(kd, udrv.ud_dname, name, sizeof name); 8648571Sbostic dr_name[udev.ui_dk] = p; 8748571Sbostic p += sprintf(p, "%s%d", name, udev.ui_unit); 8848571Sbostic } 8955663Sbostic return (1); 9048571Sbostic } 9148571Sbostic #endif /* tahoe */ 9248571Sbostic 9348571Sbostic #ifdef vax 9448571Sbostic #include <vax/uba/ubavar.h> 9548571Sbostic #include <vax/mba/mbavar.h> 9648571Sbostic 9748571Sbostic char *defdrives[] = { "hp0", "hp1", "hp2", 0 }; 9848571Sbostic 9955663Sbostic int 10048571Sbostic read_names() 10148571Sbostic { 10248571Sbostic register char *p; 10348571Sbostic unsigned long mp, up; 10448571Sbostic struct mba_device mdev; 10548571Sbostic struct mba_driver mdrv; 10648571Sbostic struct uba_device udev; 10748571Sbostic struct uba_driver udrv; 10848571Sbostic char name[10]; 10948571Sbostic static char buf[BUFSIZ]; 11048571Sbostic 11156175Sbostic mp = namelist[X_MBDINIT].n_value; 11256175Sbostic up = namelist[X_UBDINIT].n_value; 11348571Sbostic if (mp == 0 && up == 0) { 11455663Sbostic (void)fprintf(stderr, 11555663Sbostic "disk init info not in namelist\n"); 11655663Sbostic return (0); 11748571Sbostic } 11848571Sbostic p = buf; 11955663Sbostic if (mp) 12055663Sbostic for (;; mp += sizeof mdev) { 12155663Sbostic (void)kvm_read(kd, mp, &mdev, sizeof mdev); 12255663Sbostic if (mdev.mi_driver == 0) 12355663Sbostic break; 12455663Sbostic if (mdev.mi_dk < 0 || mdev.mi_alive == 0) 12555663Sbostic continue; 12655663Sbostic (void)kvm_read(kd, mdev.mi_driver, &mdrv, sizeof mdrv); 12755663Sbostic (void)kvm_rea(kd, mdrv.md_dname, name, sizeof name); 12855663Sbostic dr_name[mdev.mi_dk] = p; 12955663Sbostic p += sprintf(p, "%s%d", name, mdev.mi_unit); 13055663Sbostic } 13155663Sbostic if (up) 13255663Sbostic for (;; up += sizeof udev) { 13355663Sbostic (void)kvm_read(kd, up, &udev, sizeof udev); 13455663Sbostic if (udev.ui_driver == 0) 13555663Sbostic break; 13655663Sbostic if (udev.ui_dk < 0 || udev.ui_alive == 0) 13755663Sbostic continue; 13855663Sbostic (void)kvm_read(kd, udev.ui_driver, &udrv, sizeof udrv); 13955663Sbostic (void)kvm_read(kd, udrv.ud_dname, name, sizeof name); 14055663Sbostic dr_name[udev.ui_dk] = p; 14155663Sbostic p += sprintf(p, "%s%d", name, udev.ui_unit); 14255663Sbostic } 14355663Sbostic return (1); 14455663Sbostic } 14555663Sbostic #endif /* vax */ 14655663Sbostic 14755663Sbostic #ifdef sun 14855663Sbostic #include <sundev/mbvar.h> 14955663Sbostic 15055663Sbostic int 15155663Sbostic read_names() 15255663Sbostic { 15355663Sbostic static int once = 0; 15455663Sbostic struct mb_device mdev; 15555663Sbostic struct mb_driver mdrv; 15655663Sbostic short two_char; 15755663Sbostic char *cp = (char *) &two_char; 15855663Sbostic register struct mb_device *mp; 15955663Sbostic 16056175Sbostic mp = (struct mb_device *)namelist[X_MBDINIT].n_value; 16155663Sbostic if (mp == 0) { 16255663Sbostic (void)fprintf(stderr, 16355663Sbostic "disk init info not in namelist\n"); 16455663Sbostic return (0); 16548571Sbostic } 16655663Sbostic for (;; ++mp) { 16755663Sbostic (void)kvm_read(kd, mp++, &mdev, sizeof(mdev)); 16855663Sbostic if (mdev.md_driver == 0) 16948571Sbostic break; 17055663Sbostic if (mdev.md_dk < 0 || mdev.md_alive == 0) 17148571Sbostic continue; 17255663Sbostic (void)kvm_read(kd, mdev.md_driver, &mdrv, sizeof(mdrv)); 17355663Sbostic (void)kvm_read(kd, mdrv.mdr_dname, &two_char, sizeof(two_char)); 17455663Sbostic (void)sprintf(dr_name[mdev.md_dk], 17555663Sbostic "%c%c%d", cp[0], cp[1], mdev.md_unit); 17648571Sbostic } 17755663Sbostic return(1); 17848571Sbostic } 17955663Sbostic #endif /* sun */ 180*58838Sralph 181*58838Sralph #if defined(mips) 182*58838Sralph #include <pmax/dev/device.h> 183*58838Sralph 184*58838Sralph char *defdrives[] = { "rz0", "rz1", "rz2", "rz3", "rz4", "rz5", "rz6", 0 }; 185*58838Sralph 186*58838Sralph int 187*58838Sralph read_names() 188*58838Sralph { 189*58838Sralph register char *p; 190*58838Sralph register u_long sp; 191*58838Sralph static char buf[BUFSIZ]; 192*58838Sralph struct scsi_device sdev; 193*58838Sralph struct driver hdrv; 194*58838Sralph char name[10]; 195*58838Sralph 196*58838Sralph sp = namelist[X_SCSI_DINIT].n_value; 197*58838Sralph if (sp == 0) { 198*58838Sralph (void)fprintf(stderr, "disk init info not in namelist\n"); 199*58838Sralph return (0); 200*58838Sralph } 201*58838Sralph p = buf; 202*58838Sralph for (;; sp += sizeof sdev) { 203*58838Sralph (void)kvm_read(kd, sp, &sdev, sizeof sdev); 204*58838Sralph if (sdev.sd_driver == 0) 205*58838Sralph break; 206*58838Sralph if (sdev.sd_dk < 0 || sdev.sd_alive == 0 || 207*58838Sralph sdev.sd_cdriver == 0) 208*58838Sralph continue; 209*58838Sralph (void)kvm_read(kd, (u_long)sdev.sd_driver, &hdrv, sizeof hdrv); 210*58838Sralph (void)kvm_read(kd, (u_long)hdrv.d_name, name, sizeof name); 211*58838Sralph dr_name[sdev.sd_dk] = p; 212*58838Sralph p += sprintf(p, "%s%d", name, sdev.sd_unit) + 1; 213*58838Sralph } 214*58838Sralph return (1); 215*58838Sralph } 216*58838Sralph #endif /* mips */ 217