xref: /minix/minix/servers/is/dmp_fs.c (revision 7f5f010b)
1 /* This file contains procedures to dump to FS' data structures.
2  *
3  * The entry points into this file are
4  *   dtab_dump:   	display device <-> driver mappings
5  *   fproc_dump:   	display FS process table
6  *
7  * Created:
8  *   Oct 01, 2004:	by Jorrit N. Herder
9  */
10 
11 #include "inc.h"
12 #include "mfs/const.h"
13 #include "vfs/const.h"
14 #include "vfs/fproc.h"
15 #include "vfs/dmap.h"
16 #include <minix/dmap.h>
17 
18 struct fproc fproc[NR_PROCS];
19 struct dmap dmap[NR_DEVICES];
20 
21 /*===========================================================================*
22  *				fproc_dmp				     *
23  *===========================================================================*/
24 void fproc_dmp()
25 {
26   struct fproc *fp;
27   int i, j, nfds, n=0;
28   static int prev_i;
29 
30   if (getsysinfo(VFS_PROC_NR, SI_PROC_TAB, fproc, sizeof(fproc)) != OK) {
31 	printf("Error obtaining table from VFS. Perhaps recompile IS?\n");
32 	return;
33   }
34 
35   printf("File System (FS) process table dump\n");
36   printf("-nr- -pid- -tty- -umask- --uid-- --gid-- -ldr-fds-sus-rev-proc-\n");
37   for (i=prev_i; i<NR_PROCS; i++) {
38   	fp = &fproc[i];
39   	if (fp->fp_pid <= 0) continue;
40   	if (++n > 22) break;
41 	for (j = nfds = 0; j < OPEN_MAX; j++)
42 		if (fp->fp_filp[j] != NULL) nfds++;
43 	printf("%3d  %4d  %2d/%d  0x%05x %2d (%2d) %2d (%2d) %3d %3d %3d %3d ",
44 		i, fp->fp_pid,
45 		major(fp->fp_tty), minor(fp->fp_tty),
46 		fp->fp_umask,
47 		fp->fp_realuid, fp->fp_effuid, fp->fp_realgid, fp->fp_effgid,
48 		!!(fp->fp_flags & FP_SESLDR), nfds,
49 		fp->fp_blocked_on, !!(fp->fp_flags & FP_REVIVED)
50 	);
51 	if (fp->fp_blocked_on == FP_BLOCKED_ON_OTHER)
52 		printf("%4d\n", fp->fp_task);
53 	else
54 		printf(" nil\n");
55   }
56   if (i >= NR_PROCS) i = 0;
57   else printf("--more--\r");
58   prev_i = i;
59 }
60 
61 /*===========================================================================*
62  *				dtab_dmp				     *
63  *===========================================================================*/
64 void dtab_dmp()
65 {
66     int i;
67 
68     if (getsysinfo(VFS_PROC_NR, SI_DMAP_TAB, dmap, sizeof(dmap)) != OK) {
69         printf("Error obtaining table from VFS. Perhaps recompile IS?\n");
70         return;
71     }
72 
73     printf("File System (FS) device <-> driver mappings\n");
74     printf("    Label     Major Driver ept\n");
75     printf("------------- ----- ----------\n");
76     for (i=0; i<NR_DEVICES; i++) {
77         if (dmap[i].dmap_driver == NONE) continue;
78         printf("%13s %5d %10d\n", dmap[i].dmap_label, i, dmap[i].dmap_driver);
79     }
80 }
81