1 /* This file contains procedures to dump to PM' data structures.
3 * The entry points into this file are
4 * mproc_dmp: display PM process table
7 * May 11, 2005: by Jorrit N. Herder
11 #include "../pm/mproc.h"
12 #include <minix/timers.h>
13 #include <minix/config.h>
14 #include <minix/type.h>
16 struct mproc mproc
[NR_PROCS
];
18 /*===========================================================================*
20 *===========================================================================*/
21 static char *flags_str(int flags
)
24 str
[0] = (flags
& WAITING
) ? 'W' : '-';
25 str
[1] = (flags
& ZOMBIE
) ? 'Z' : '-';
26 str
[2] = (flags
& ALARM_ON
) ? 'A' : '-';
27 str
[3] = (flags
& EXITING
) ? 'E' : '-';
28 str
[4] = (flags
& TRACE_STOPPED
) ? 'T' : '-';
29 str
[5] = (flags
& SIGSUSPENDED
) ? 'U' : '-';
30 str
[6] = (flags
& VFS_CALL
) ? 'F' : '-';
31 str
[7] = (flags
& PROC_STOPPED
) ? 's' : '-';
32 str
[8] = (flags
& PRIV_PROC
) ? 'p' : '-';
33 str
[9] = (flags
& PARTIAL_EXEC
) ? 'x' : '-';
34 str
[10] = (flags
& DELAY_CALL
) ? 'd' : '-';
44 static int prev_i
= 0;
46 if (getsysinfo(PM_PROC_NR
, SI_PROC_TAB
, mproc
, sizeof(mproc
)) != OK
) {
47 printf("Error obtaining table from PM. Perhaps recompile IS?\n");
51 printf("Process manager (PM) process table dump\n");
52 printf("-process- -nr-pnr-tnr- --pid--ppid--pgrp- -uid-- -gid-- -nice- -flags-----\n");
53 for (i
=prev_i
; i
<NR_PROCS
; i
++) {
55 if (mp
->mp_pid
== 0 && i
!= PM_PROC_NR
) continue;
57 printf("%8.8s %4d%4d%4d %5d %5d %5d ",
58 mp
->mp_name
, i
, mp
->mp_parent
, mp
->mp_tracer
, mp
->mp_pid
, mproc
[mp
->mp_parent
].mp_pid
, mp
->mp_procgrp
);
59 printf("%2d(%2d) %2d(%2d) ",
60 mp
->mp_realuid
, mp
->mp_effuid
, mp
->mp_realgid
, mp
->mp_effgid
);
62 mp
->mp_nice
, flags_str(mp
->mp_flags
));
65 if (i
>= NR_PROCS
) i
= 0;
66 else printf("--more--\r");
70 /*===========================================================================*
72 *===========================================================================*/
77 static int prev_i
= 0;
80 if (getsysinfo(PM_PROC_NR
, SI_PROC_TAB
, mproc
, sizeof(mproc
)) != OK
) {
81 printf("Error obtaining table from PM. Perhaps recompile IS?\n");
86 printf("Process manager (PM) signal action dump\n");
87 printf("-process- -nr- --ignore- --catch- --block- -pending- -alarm---\n");
88 for (i
=prev_i
; i
<NR_PROCS
; i
++) {
90 if (mp
->mp_pid
== 0 && i
!= PM_PROC_NR
) continue;
92 printf("%8.8s %3d ", mp
->mp_name
, i
);
93 printf(" %08x %08x %08x ",
94 mp
->mp_ignore
.__bits
[0], mp
->mp_catch
.__bits
[0],
95 mp
->mp_sigmask
.__bits
[0]);
96 printf("%08x ", mp
->mp_sigpending
.__bits
[0]);
97 if (mp
->mp_flags
& ALARM_ON
) printf("%8lu", mp
->mp_timer
.tmr_exp_time
-uptime
);
101 if (i
>= NR_PROCS
) i
= 0;
102 else printf("--more--\r");