Use the TSLOG framework to record entry/exit timestamps for machine
independent functions with important roles in the early boot process: mi_startup (with the "exit" recorded when it becomes swapper), start_init (with the "exit" recorded when the thread is about to "return" into the newly created init process), vfs_mountroot, and vfs_mountroot_wait.
This commit is contained in:
parent
31a55efdc5
commit
6032e08810
@ -220,6 +220,8 @@ mi_startup(void)
|
||||
int verbose;
|
||||
#endif
|
||||
|
||||
TSENTER();
|
||||
|
||||
if (boothowto & RB_VERBOSE)
|
||||
bootverbose++;
|
||||
|
||||
@ -313,6 +315,8 @@ mi_startup(void)
|
||||
}
|
||||
}
|
||||
|
||||
TSEXIT(); /* Here so we don't overlap with start_init. */
|
||||
|
||||
mtx_assert(&Giant, MA_OWNED | MA_NOTRECURSED);
|
||||
mtx_unlock(&Giant);
|
||||
|
||||
@ -706,6 +710,8 @@ start_init(void *dummy)
|
||||
|
||||
GIANT_REQUIRED;
|
||||
|
||||
TSENTER(); /* Here so we don't overlap with mi_startup. */
|
||||
|
||||
td = curthread;
|
||||
p = td->td_proc;
|
||||
|
||||
@ -799,6 +805,7 @@ start_init(void *dummy)
|
||||
*/
|
||||
if ((error = sys_execve(td, &args)) == EJUSTRETURN) {
|
||||
mtx_unlock(&Giant);
|
||||
TSEXIT();
|
||||
return;
|
||||
}
|
||||
if (error != ENOENT)
|
||||
|
@ -938,6 +938,8 @@ vfs_mountroot_wait(void)
|
||||
struct timeval lastfail;
|
||||
int curfail;
|
||||
|
||||
TSENTER();
|
||||
|
||||
curfail = 0;
|
||||
while (1) {
|
||||
DROP_GIANT();
|
||||
@ -957,6 +959,8 @@ vfs_mountroot_wait(void)
|
||||
msleep(&root_holds, &root_holds_mtx, PZERO | PDROP, "roothold",
|
||||
hz);
|
||||
}
|
||||
|
||||
TSEXIT();
|
||||
}
|
||||
|
||||
static int
|
||||
@ -1014,6 +1018,8 @@ vfs_mountroot(void)
|
||||
time_t timebase;
|
||||
int error;
|
||||
|
||||
TSENTER();
|
||||
|
||||
td = curthread;
|
||||
|
||||
sb = sbuf_new_auto();
|
||||
@ -1062,6 +1068,8 @@ vfs_mountroot(void)
|
||||
mtx_unlock(&root_holds_mtx);
|
||||
|
||||
EVENTHANDLER_INVOKE(mountroot);
|
||||
|
||||
TSEXIT();
|
||||
}
|
||||
|
||||
static struct mntarg *
|
||||
|
Loading…
Reference in New Issue
Block a user