home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume4 / sco-crash / bufs.c next >
Encoding:
C/C++ Source or Header  |  1989-02-03  |  1.6 KB  |  72 lines

  1. #include <sys/param.h>
  2. #include <sys/sysmacros.h>
  3. #include <sys/types.h>
  4. #include <sys/var.h>
  5. #include <sys/inode.h>
  6. #include <sys/ino.h>
  7. #include <sys/buf.h>
  8. #include <a.out.h>
  9. #include "crash.h"
  10.  
  11. prbufs (items, cnt)
  12. int    *items;
  13. int    cnt;
  14. {
  15.     int    i;
  16.  
  17.     bufs = (struct buf *) malloc (v.v_buf * sizeof (struct buf));
  18.  
  19.     l_lseek (kmemfd, namelist[NM_BUFFER].xl_value, 0);
  20.     r_read (kmemfd, &bufstart, sizeof bufstart);
  21.  
  22.     l_lseek (memfd, bufstart, 0);
  23.     r_read (memfd, bufs, v.v_buf * sizeof (struct buf));
  24.  
  25.     printf (" BUF MAJ  MIN    BLOCK FLAGS\n");
  26.  
  27.     if (cnt == 0) {
  28.         for (i = 0;i < v.v_buf;i++) {
  29.             if (bufs[i].b_flags == 0)
  30.                 continue;
  31.  
  32.             dobuf (i);
  33.         }
  34.     } else {
  35.         for (i = 0;i < cnt;i++) {
  36.             if (items[i] >= v.v_buf)
  37.                 printf ("value (%d) out of range\n", items[i]);
  38.             else
  39.                 dobuf (items[i]);
  40.         }
  41.     }
  42.     free ((char *) bufs);
  43. }
  44.  
  45. dobuf (i)
  46. int    i;
  47. {
  48.     struct    buf    *bp;
  49.  
  50.     bp = &bufs[i];
  51.  
  52.     printf ("%4d %03.3o %04.4o %8d",
  53.         i, major (bp->b_dev) & 0377, minor (bp->b_dev), bp->b_blkno);
  54.  
  55.     if (bp->b_flags & B_READ)    printf (" read");
  56.     if (bp->b_flags & B_DONE)    printf (" done");
  57.     if (bp->b_flags & B_ERROR)    printf (" error");
  58.     if (bp->b_flags & B_BUSY)    printf (" busy");
  59.     if (bp->b_flags & B_PHYS)    printf (" phys");
  60.     if (bp->b_flags & B_MAP)    printf (" map");
  61.     if (bp->b_flags & B_WANTED)    printf (" wanted");
  62.     if (bp->b_flags & B_AGE)    printf (" age");
  63.     if (bp->b_flags & B_ASYNC)    printf (" async");
  64.     if (bp->b_flags & B_DELWRI)    printf (" delwri");
  65.     if (bp->b_flags & B_OPEN)    printf (" open");
  66.     if (bp->b_flags & B_STALE)    printf (" stale");
  67.     if (bp->b_flags & B_NOCROSS)    printf (" nocross");
  68.     if (bp->b_flags & B_FLUSH)    printf (" flush");
  69.  
  70.     putchar ('\n');
  71. }
  72.