home *** CD-ROM | disk | FTP | other *** search
- /*
- * Copyright 1991, John F. Haugh II
- * An unpublished work.
- * All rights reserved.
- *
- * Permission is granted to copy and create derivative works for any
- * non-commercial purpose, provided this copyright notice is preserved
- * in all copies of source code, or included in human readable form
- * and conspicuously displayed on all copies of object code or
- * distribution media.
- */
-
- #ifndef lint
- static char sccsid[] = "@(#)devs.c 2.1 07:14:51 2/27/91";
- #endif
-
- #include <sys/types.h>
- #include <sys/conf.h>
- #include <stdio.h>
- #include "crash.h"
-
- extern char *text2sym();
- extern char *data2sym();
-
- char *
- kgets (off, buf)
- long off;
- char *buf;
- {
- char c;
- char *orig = buf;
-
- l_lseek (kmemfd, off, 0);
- while (r_read (kmemfd, &c, 1) == 1 && (*buf++ = c))
- ;
-
- if (c)
- return 0;
- else
- return orig;
- }
-
- pr1cdev (cmajor)
- int cmajor;
- {
- char *sym;
- char buf[BUFSIZ];
- long diff;
-
- if (cmajor < 0 || cmajor >= Cdevcnt) {
- printf ("value (%d) out of range\n", cmajor);
- return;
- }
- printf ("cdevsw[%d]: ", cmajor);
-
- if (Cdevsw[cmajor].d_name)
- printf ("%s ", kgets (Cdevsw[cmajor].d_name, buf));
- else
- printf ("(unnamed) ");
-
- if (sym = text2sym (Cdevsw[cmajor].d_open, &diff))
- printf ("%s ", sym);
- else
- printf ("0x%x ", Cdevsw[cmajor].d_open);
-
- if (sym = text2sym (Cdevsw[cmajor].d_close, &diff))
- printf ("%s ", sym);
- else
- printf ("0x%x ", Cdevsw[cmajor].d_close);
-
- if (sym = text2sym (Cdevsw[cmajor].d_read, &diff))
- printf ("%s ", sym);
- else
- printf ("0x%x ", Cdevsw[cmajor].d_read);
-
- if (sym = text2sym (Cdevsw[cmajor].d_write, &diff))
- printf ("%s ", sym);
- else
- printf ("0x%x ", Cdevsw[cmajor].d_write);
-
- if (sym = text2sym (Cdevsw[cmajor].d_ioctl, &diff))
- printf ("%s ", sym);
- else
- printf ("0x%x ", Cdevsw[cmajor].d_ioctl);
-
- if (sym = data2sym (Cdevsw[cmajor].d_ttys, &diff))
- printf ("%s ", sym);
- else
- printf ("0x%x ", Cdevsw[cmajor].d_ttys);
-
- putchar ('\n');
- }
-
- prcdevs (list, cnt)
- int *list;
- int cnt;
- {
- int i;
-
- if (list == 0) {
- for (i = 0;i < Cdevcnt;i++) {
- if (Cdevsw[i].d_name == 0)
- continue;
-
- pr1cdev (i);
- }
- } else
- for (i = 0;i < cnt;i++) {
- pr1cdev (list[i]);
- }
- }
-
- pr1bdev (bmajor)
- int bmajor;
- {
- char *sym;
- char buf[BUFSIZ];
- long diff;
-
- if (bmajor < 0 || bmajor >= Bdevcnt) {
- printf ("value (%d) out of range\n", bmajor);
- return;
- }
- printf ("bdevsw[%d]: ", bmajor);
-
- if (Bdevsw[bmajor].d_name)
- printf ("%s ", kgets (Bdevsw[bmajor].d_name, buf));
- else
- printf ("(unnamed) ");
-
- if (sym = text2sym (Bdevsw[bmajor].d_open, &diff))
- printf ("%s ", sym);
- else
- printf ("0x%x ", Bdevsw[bmajor].d_open);
-
- if (sym = text2sym (Bdevsw[bmajor].d_close, &diff))
- printf ("%s ", sym);
- else
- printf ("0x%x ", Bdevsw[bmajor].d_close);
-
- if (sym = text2sym (Bdevsw[bmajor].d_strategy, &diff))
- printf ("%s ", sym);
- else
- printf ("0x%x ", Bdevsw[bmajor].d_strategy);
-
-
- putchar ('\n');
- }
-
- prbdevs (list, cnt)
- int *list;
- int cnt;
- {
- int i;
-
- if (list == 0) {
- for (i = 0;i < Bdevcnt;i++) {
- if (Bdevsw[i].d_name == 0)
- continue;
-
- pr1bdev (i);
- }
- } else
- for (i = 0;i < cnt;i++) {
- pr1bdev (list[i]);
- }
- }
-