Index: init_main.c =================================================================== RCS file: /host/cvs/usr/home/ncvs/src/sys/kern/init_main.c,v retrieving revision 1.165 diff -u -r1.165 init_main.c --- init_main.c 2001/03/28 11:52:53 1.165 +++ init_main.c 2001/04/12 23:43:25 @@ -77,6 +77,9 @@ #include #include +#include +#include + extern struct linker_set sysinit_set; /* XXX */ void mi_startup(void); /* Should be elsewhere */ @@ -172,6 +175,9 @@ register struct sysinit **xipp; /* interior loop of sort*/ register struct sysinit *save; /* bubble*/ + int last; + int verbose; + restart: /* * Perform a bubble sort of the system initialization objects by @@ -189,6 +195,9 @@ } } + last = SI_SUB_COPYRIGHT; + verbose = 0; + /* * Traverse the (now) ordered list of system initialization tasks. * Perform each task, and continue on to the next task. @@ -204,8 +213,31 @@ if ((*sipp)->subsystem == SI_SUB_DONE) continue; + if ((*sipp)->subsystem > last) { + verbose = 1; + last = (*sipp)->subsystem; + printf("subsystem %x\n", last); + } + if (verbose) { + const char *name; + c_db_sym_t sym; + db_expr_t offset; + + sym = db_search_symbol((vm_offset_t)(*sipp)->func, + DB_STGY_PROC, &offset); + db_symbol_values(sym, &name, NULL); + if (name != NULL) + printf(" %s(%p)... ", name, (*sipp)->udata); + else + printf(" %p(%p)... ", (*sipp)->func, + (*sipp)->udata); + } + /* Call function */ (*((*sipp)->func))((*sipp)->udata); + + if (verbose) + printf("done.\n"); /* Check off the one we're just done */ (*sipp)->subsystem = SI_SUB_DONE;