# include "ctlmod.h" # include # include SCCSID(@(#)sysdump.c 8.1 12/31/84) /* ** SYSDUMP -- dump all parameters & state of system. ** ** This is a process to put in for debugging. */ extern int sysdump(); extern int null_fn(); extern int dump_cm(); short tTsysdump[40]; struct fn_def SysDmpFn = { "SYSDUMP", sysdump, dump_cm, null_fn, NULL, 0, tTsysdump, 40, 'Q', 0 }; sysdump(pc, pv) int pc; register PARM pv[]; { register int i; auto char cx; tTfp(30, 0, "\n\nENTERED SYSDUMP\n\n"); tTfp(30, 1, "Parameter vector:\n"); if (tTf(30, 2)) prvect(pc, pv); tTfp(30, 3, "\nMonitor input: \""); if (tTf(30, 4)) { while (readmon(&cx, 1) > 0) xputchar(cx); printf("\"\n"); } if (tTf(30, 5)) { printf("\nQuery tree area:\n"); printf("Qmode = %d\tResvar = %d\n", Qt.qt_qmode, Qt.qt_resvar); } if (tTf(30, 6)) { printf("\nRange table:\n"); for (i = 0; i < MAXRANGE; i++) { if (Qt.qt_rangev[i].rngvdesc != NULL) { printf("\nVAR %d: ", i); printdesc(Qt.qt_rangev[i].rngvdesc); } } printf("\n\n"); } return (0); } /* ** DUMP_CM -- dump control module configuration table. */ /*ARGSUSED*/ dump_cm(argc, argv) int argc; char **argv; { register int i; register state_t *s; register proc_t *pr; static int reenter; if (!tTf(30, 0) || reenter++ > 0) return; printf("\n\n\nCONTROL MODULE CONFIGURATION TABLES:\n"); printf("\nThe states:\n"); for (i = 0, s = Cm.cm_state; i < CM_MAXST; i++, s++) { if (s->st_type == ST_UNDEF) continue; printf("%3d: stat %3o ", i, s->st_stat); switch (s->st_type) { case ST_LOCAL: printf("(loc) func %d next %2d\n", s->st_v.st_loc.st_funcno, s->st_v.st_loc.st_next); break; case ST_REMOT: printf("(rem) proc %d\n", s->st_v.st_rem.st_proc); break; default: printf("bad type %d\n", s->st_type); break; } } printf("\nThe procs:\n"); for (i = 0, pr = Cm.cm_proc; i < CM_MAXPROC; i++, pr++) { printf("%3d: stat %4o file %2d ninput %2d\n", i, pr->pr_stat, pr->pr_file, pr->pr_ninput); } printf("\nInitial input = %d\n", Cm.cm_input); printf("\n\n\n"); }