+
+#ifdef hp300
+#include <hpdev/device.h>
+
+#define validdisk(cp) ((cp)[1] == 'd' && ((cp)[0] == 'r' || (cp)[0] == 's'))
+
+read_names()
+{
+ struct hp_device hdev;
+ register struct hp_device *hp;
+ struct driver hdrv;
+ short two_char;
+ char *cp = (char *) &two_char;
+ register char *dp;
+
+ hp = (struct hp_device *) nl[X_HPDINIT].n_value;
+ if (hp == 0) {
+ fprintf(stderr, "vmstat: Disk init info not in namelist\n");
+ exit(1);
+ }
+ for (;;) {
+ steal(hp++, hdev);
+ if (hdev.hp_driver == 0)
+ break;
+ steal(hdev.hp_driver, hdrv);
+ steal(hdrv.d_name, two_char);
+ /*
+ * hp_dk is meaningless if the device isn't a disk
+ * (d_name not valid) or the disk was not found when
+ * booting (hp_alive == 0).
+ */
+ if (!validdisk(cp) || hdev.hp_alive == 0)
+ continue;
+ dp = dr_name[hdev.hp_dk];
+ sprintf(dp, "%c%c%d", cp[0], cp[1], hdev.hp_unit);
+ }
+}
+#endif