148571Sbostic /*-
2*62429Sbostic * Copyright (c) 1991, 1993
3*62429Sbostic * The Regents of the University of California. All rights reserved.
448571Sbostic *
548571Sbostic * %sccs.include.redist.c%
648571Sbostic *
7*62429Sbostic * @(#)names.c 8.1 (Berkeley) 06/06/93
848571Sbostic */
948571Sbostic
1058838Sralph #if !defined(hp300) && !defined(tahoe) && !defined(vax) && \
1158838Sralph !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
read_names()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
read_names()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
read_names()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
read_names()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 */
18058838Sralph
18158838Sralph #if defined(mips)
18258838Sralph #include <pmax/dev/device.h>
18358838Sralph
18458838Sralph char *defdrives[] = { "rz0", "rz1", "rz2", "rz3", "rz4", "rz5", "rz6", 0 };
18558838Sralph
18658838Sralph int
read_names()18758838Sralph read_names()
18858838Sralph {
18958838Sralph register char *p;
19058838Sralph register u_long sp;
19158838Sralph static char buf[BUFSIZ];
19258838Sralph struct scsi_device sdev;
19358838Sralph struct driver hdrv;
19458838Sralph char name[10];
19558838Sralph
19658838Sralph sp = namelist[X_SCSI_DINIT].n_value;
19758838Sralph if (sp == 0) {
19858838Sralph (void)fprintf(stderr, "disk init info not in namelist\n");
19958838Sralph return (0);
20058838Sralph }
20158838Sralph p = buf;
20258838Sralph for (;; sp += sizeof sdev) {
20358838Sralph (void)kvm_read(kd, sp, &sdev, sizeof sdev);
20458838Sralph if (sdev.sd_driver == 0)
20558838Sralph break;
20658838Sralph if (sdev.sd_dk < 0 || sdev.sd_alive == 0 ||
20758838Sralph sdev.sd_cdriver == 0)
20858838Sralph continue;
20958838Sralph (void)kvm_read(kd, (u_long)sdev.sd_driver, &hdrv, sizeof hdrv);
21058838Sralph (void)kvm_read(kd, (u_long)hdrv.d_name, name, sizeof name);
21158838Sralph dr_name[sdev.sd_dk] = p;
21258838Sralph p += sprintf(p, "%s%d", name, sdev.sd_unit) + 1;
21358838Sralph }
21458838Sralph return (1);
21558838Sralph }
21658838Sralph #endif /* mips */
217