|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T r
Length: 1669 (0x685) Types: TextFile Names: »readnames.c«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki └─⟦this⟧ »EUUGD11/euug-87hel/sec8/mon/readnames.c«
/* * R E A D N A M E S * * purpose: Reads the names of the disks from kernel space * */ #include "mon.h" #include <sys/buf.h> /* needed by following two includes */ #include <vaxuba/ubavar.h> /* unibus adapters */ #include <vaxmba/mbavar.h> /* massbus adapters */ #define steal(where, var) lseek(kmem, where, 0); read(kmem, &var, sizeof var); read_names() { struct mba_device mdev; register struct mba_device *mp; struct mba_driver mdrv; short two_char; char *cp = (char *) &two_char; struct uba_device udev, *up; struct uba_driver udrv; mp = (struct mba_device *) namelist[X_MBDINIT].n_value; up = (struct uba_device *) namelist[X_UBDINIT].n_value; if (mp) for (;;) { steal(mp++, mdev); if (mdev.mi_driver == 0) break; if (mdev.mi_dk < 0 || mdev.mi_alive == 0) continue; steal(mdev.mi_driver, mdrv); steal(mdrv.md_dname, two_char); sprintf(dr_name[mdev.mi_dk], "%c%c%d", cp[0], cp[1], mdev.mi_unit); dr_unit[mdev.mi_dk] = mdev.mi_unit; } if (up) for (;;) { steal(up++, udev); if (udev.ui_driver == 0) break; if (udev.ui_dk < 0 || udev.ui_alive == 0) continue; steal(udev.ui_driver, udrv); steal(udrv.ud_dname, two_char); sprintf(dr_name[udev.ui_dk], "%c%c%d", cp[0], cp[1], udev.ui_unit); dr_unit[udev.ui_dk] = udev.ui_unit; } }