home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume4 / sco-crash / mounts.c < prev    next >
Encoding:
C/C++ Source or Header  |  1989-02-03  |  1.8 KB  |  82 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 <sys/filsys.h>
  9. #include <sys/mount.h>
  10. #include <a.out.h>
  11. #include "crash.h"
  12.  
  13. prmounts (items, cnt)
  14. int    *items;
  15. int    cnt;
  16. {
  17.     int    i;
  18.  
  19.     mounts = (struct mount *) malloc (v.v_mount * sizeof (struct mount));
  20.     l_lseek (kmemfd, namelist[NM_MOUNT].xl_value, 0);
  21.     r_read (kmemfd, mounts, sizeof (struct mount) * v.v_mount);
  22.     l_lseek (kmemfd, namelist[NM_BUFFER].xl_value, 0);
  23.     r_read (kmemfd, &bufstart, sizeof bufstart);
  24.  
  25.     printf ("SLOT  MAJ  MIN  INODE  BUF  VOLUME  PACK   BLOCKS INODES  BFREE  IFREE\n");
  26.  
  27.     if (cnt == 0) {
  28.         for (i = 0;i < v.v_mount;i++) {
  29.             if (mounts[i].m_flags == 0)
  30.                 continue;
  31.  
  32.             domount (i);
  33.         }
  34.     } else {
  35.         for (i = 0;i < cnt;i++) {
  36.             if (items[i] >= v.v_mount)
  37.                 printf ("value (%d) out of range\n", items[i]);
  38.             else
  39.                 domount (items[i]);
  40.         }
  41.     }
  42.     free ((char *) mounts);
  43. }
  44.  
  45. domount (i)
  46. int    i;
  47. {
  48.     struct    filsys    filsys;
  49.     struct    buf    buf;
  50.     struct    inode    *ip = (struct inode *) namelist[NM_INODE].xl_value;
  51.  
  52.     printf ("%4d %4o  %03o %6d %4d",
  53.         i, major (mounts[i].m_dev), minor (mounts[i].m_dev),
  54.         mounts[i].m_inodp ?
  55.             mounts[i].m_inodp - ip : 0,
  56.         mounts[i].m_bufp ?
  57.             mounts[i].m_bufp - bufstart : 0);
  58.  
  59.     /*
  60.      * zero before using since unused mount entries don't have
  61.      * buffers and such.
  62.      */
  63.  
  64.     memset (&buf, 0, sizeof buf);
  65.     memset (&filsys, 0, sizeof filsys);
  66.  
  67.     if (mounts[i].m_flags != 0) {
  68.         l_lseek (memfd, (long) mounts[i].m_bufp, 0);
  69.         r_read (memfd, &buf, sizeof buf);
  70.         l_lseek (memfd, (long) buf.b_paddr, 0);
  71.         r_read (memfd, &filsys, sizeof filsys);
  72.     }
  73.     printf ("  %-6.6s  %-6.6s",
  74.         filsys.s_fname, filsys.s_fpack);
  75.  
  76.     printf (" %6ld %6ld %6ld %6ld",
  77.         filsys.s_fsize, INOPB * filsys.s_isize,
  78.         (long) filsys.s_tfree, (long) filsys.s_tinode);
  79.  
  80.     putchar ('\n');
  81. }
  82.