home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1992 March / Source_Code_CD-ROM_Walnut_Creek_March_1992.iso / usenet / altsrcs / 2 / 2870 / devs.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-02-28  |  3.0 KB  |  168 lines

  1. /*
  2.  * Copyright 1991, John F. Haugh II
  3.  * An unpublished work.
  4.  * All rights reserved.
  5.  *
  6.  * Permission is granted to copy and create derivative works for any
  7.  * non-commercial purpose, provided this copyright notice is preserved
  8.  * in all copies of source code, or included in human readable form
  9.  * and conspicuously displayed on all copies of object code or
  10.  * distribution media.
  11.  */
  12.  
  13. #ifndef    lint
  14. static    char    sccsid[] = "@(#)devs.c    2.1    07:14:51    2/27/91";
  15. #endif
  16.  
  17. #include <sys/types.h>
  18. #include <sys/conf.h>
  19. #include <stdio.h>
  20. #include "crash.h"
  21.  
  22. extern    char    *text2sym();
  23. extern    char    *data2sym();
  24.  
  25. char *
  26. kgets (off, buf)
  27. long    off;
  28. char    *buf;
  29. {
  30.     char    c;
  31.     char    *orig = buf;
  32.  
  33.     l_lseek (kmemfd, off, 0);
  34.     while (r_read (kmemfd, &c, 1) == 1 && (*buf++ = c))
  35.         ;
  36.  
  37.     if (c)
  38.         return 0;
  39.     else
  40.         return orig;
  41. }
  42.  
  43. pr1cdev (cmajor)
  44. int    cmajor;
  45. {
  46.     char    *sym;
  47.     char    buf[BUFSIZ];
  48.     long    diff;
  49.  
  50.     if (cmajor < 0 || cmajor >= Cdevcnt) {
  51.         printf ("value (%d) out of range\n", cmajor);
  52.         return;
  53.     }
  54.     printf ("cdevsw[%d]: ", cmajor);
  55.  
  56.     if (Cdevsw[cmajor].d_name)
  57.         printf ("%s ", kgets (Cdevsw[cmajor].d_name, buf));
  58.     else
  59.         printf ("(unnamed) ");
  60.  
  61.     if (sym = text2sym (Cdevsw[cmajor].d_open, &diff))
  62.         printf ("%s ", sym);
  63.     else
  64.         printf ("0x%x ", Cdevsw[cmajor].d_open);
  65.  
  66.     if (sym = text2sym (Cdevsw[cmajor].d_close, &diff))
  67.         printf ("%s ", sym);
  68.     else
  69.         printf ("0x%x ", Cdevsw[cmajor].d_close);
  70.  
  71.     if (sym = text2sym (Cdevsw[cmajor].d_read, &diff))
  72.         printf ("%s ", sym);
  73.     else
  74.         printf ("0x%x ", Cdevsw[cmajor].d_read);
  75.  
  76.     if (sym = text2sym (Cdevsw[cmajor].d_write, &diff))
  77.         printf ("%s ", sym);
  78.     else
  79.         printf ("0x%x ", Cdevsw[cmajor].d_write);
  80.  
  81.     if (sym = text2sym (Cdevsw[cmajor].d_ioctl, &diff))
  82.         printf ("%s ", sym);
  83.     else
  84.         printf ("0x%x ", Cdevsw[cmajor].d_ioctl);
  85.  
  86.     if (sym = data2sym (Cdevsw[cmajor].d_ttys, &diff))
  87.         printf ("%s ", sym);
  88.     else
  89.         printf ("0x%x ", Cdevsw[cmajor].d_ttys);
  90.  
  91.     putchar ('\n');
  92. }
  93.  
  94. prcdevs (list, cnt)
  95. int    *list;
  96. int    cnt;
  97. {
  98.     int    i;
  99.  
  100.     if (list == 0) {
  101.         for (i = 0;i < Cdevcnt;i++) {
  102.             if (Cdevsw[i].d_name == 0)
  103.                 continue;
  104.  
  105.             pr1cdev (i);
  106.         }
  107.     } else 
  108.         for (i = 0;i < cnt;i++) {
  109.             pr1cdev (list[i]);
  110.     }
  111. }
  112.  
  113. pr1bdev (bmajor)
  114. int    bmajor;
  115. {
  116.     char    *sym;
  117.     char    buf[BUFSIZ];
  118.     long    diff;
  119.  
  120.     if (bmajor < 0 || bmajor >= Bdevcnt) {
  121.         printf ("value (%d) out of range\n", bmajor);
  122.         return;
  123.     }
  124.     printf ("bdevsw[%d]: ", bmajor);
  125.  
  126.     if (Bdevsw[bmajor].d_name)
  127.         printf ("%s ", kgets (Bdevsw[bmajor].d_name, buf));
  128.     else
  129.         printf ("(unnamed) ");
  130.  
  131.     if (sym = text2sym (Bdevsw[bmajor].d_open, &diff))
  132.         printf ("%s ", sym);
  133.     else
  134.         printf ("0x%x ", Bdevsw[bmajor].d_open);
  135.  
  136.     if (sym = text2sym (Bdevsw[bmajor].d_close, &diff))
  137.         printf ("%s ", sym);
  138.     else
  139.         printf ("0x%x ", Bdevsw[bmajor].d_close);
  140.  
  141.     if (sym = text2sym (Bdevsw[bmajor].d_strategy, &diff))
  142.         printf ("%s ", sym);
  143.     else
  144.         printf ("0x%x ", Bdevsw[bmajor].d_strategy);
  145.  
  146.  
  147.     putchar ('\n');
  148. }
  149.  
  150. prbdevs (list, cnt)
  151. int    *list;
  152. int    cnt;
  153. {
  154.     int    i;
  155.  
  156.     if (list == 0) {
  157.         for (i = 0;i < Bdevcnt;i++) {
  158.             if (Bdevsw[i].d_name == 0)
  159.                 continue;
  160.  
  161.             pr1bdev (i);
  162.         }
  163.     } else 
  164.         for (i = 0;i < cnt;i++) {
  165.             pr1bdev (list[i]);
  166.     }
  167. }
  168.