use the verbose=2 boot monitor setting to get extensive output for debugging

This commit is contained in:
Erik van der Kouwe
2010-02-13 22:11:16 +00:00
parent df60646f98
commit ff835e0e35
6 changed files with 79 additions and 17 deletions

View File

@@ -82,4 +82,11 @@
#define BOOT_VERBOSE(x)
#endif
#ifdef _SYSTEM
#define DEBUG_PRINT(params, level) do { \
if (verboseboot >= (level)) kprintf params; } while (0)
#define DEBUGBASIC(params) DEBUG_PRINT(params, VERBOSEBOOT_BASIC)
#define DEBUGMAX(params) DEBUG_PRINT(params, VERBOSEBOOT_MAX)
#endif
#endif /* DEBUG_H */

View File

@@ -47,6 +47,7 @@ EXTERN int minix_panicing;
EXTERN int locklevel;
EXTERN char fpu_presence;
EXTERN char osfxsr_feature; /* FXSAVE/FXRSTOR instructions support (SSEx) */
EXTERN int verboseboot; /* verbose boot, init'ed in cstart */
#define MAGICTEST 0xC0FFEE23
EXTERN u32_t magictest; /* global magic number */

View File

@@ -40,6 +40,8 @@ PUBLIC void main()
/* Global value to test segment sanity. */
magictest = MAGICTEST;
DEBUGMAX(("main()\n"));
/* Clear the process table. Anounce each slot as empty and set up mappings
* for proc_addr() and proc_nr() macros. Do the same for the table with
* privilege structures for the system processes.
@@ -75,6 +77,7 @@ PUBLIC void main()
int ipc_to_m, kcalls;
ip = &image[i]; /* process' attributes */
DEBUGMAX(("initializing %s... ", ip->proc_name));
rp = proc_addr(ip->proc_nr); /* get process pointer */
ip->endpoint = rp->p_endpoint; /* ipc endpoint */
rp->p_max_priority = ip->priority; /* max scheduling priority */
@@ -203,15 +206,22 @@ PUBLIC void main()
if (rp->p_nr < 0) RTS_SET(rp, RTS_PROC_STOP);
RTS_UNSET(rp, RTS_SLOT_FREE); /* remove RTS_SLOT_FREE and schedule */
alloc_segments(rp);
DEBUGMAX(("done\n"));
}
/* Architecture-dependent initialization. */
DEBUGMAX(("arch_init()... "));
arch_init();
DEBUGMAX(("done\n"));
/* System and processes initialization */
DEBUGMAX(("system_init()... "));
system_init();
DEBUGMAX(("done\n"));
/* Initialize timers handling */
DEBUGMAX(("clock_init()... "));
clock_init();
DEBUGMAX(("done\n"));
#if SPROFILE
sprofiling = 0; /* we're not profiling until instructed to */
@@ -251,7 +261,9 @@ PUBLIC void main()
FIXME("PROC check enabled");
#endif
DEBUGMAX(("cycles_accounting_init()... "));
cycles_accounting_init();
DEBUGMAX(("done\n"));
restart();
NOT_REACHABLE;

View File

@@ -39,6 +39,12 @@ U16_t parmoff, parmsize; /* boot parameters offset and length */
/* Copy the boot parameters to the local buffer. */
arch_get_params(params_buffer, sizeof(params_buffer));
/* determine verbosity */
if ((value = get_value(params_buffer, VERBOSEBOOTVARNAME)))
verboseboot = atoi(value);
DEBUGMAX(("cstart\n"));
/* Record miscellaneous information for user-space servers. */
kinfo.nr_procs = NR_PROCS;
kinfo.nr_tasks = NR_TASKS;
@@ -97,6 +103,7 @@ U16_t parmoff, parmsize; /* boot parameters offset and length */
* reload selectors and call main().
*/
DEBUGMAX(("intr_init(%d, 0)\n", INTS_MINIX));
intr_init(INTS_MINIX, 0);
}