Enable mtrace_call_entrys at the right points.

上级 59539e87
......@@ -264,6 +264,8 @@ scheduler(void)
pid = nextpid++;
release(&ptable.lock);
// Enabling mtrace calls in scheduler generates many mtrace_call_entrys.
// mtrace_call_set(1, cpunum());
mtrace_fcall_register(pid, (unsigned long)scheduler, 0, mtrace_start);
for(;;){
......@@ -285,8 +287,10 @@ scheduler(void)
mtrace_fcall_register(pid, 0, 0, mtrace_pause);
mtrace_fcall_register(proc->pid, 0, 0, mtrace_resume);
mtrace_call_set(1, cpunum());
swtch(&cpu->scheduler, proc->context);
mtrace_fcall_register(pid, 0, 0, mtrace_resume);
mtrace_call_set(0, cpunum());
switchkvm();
// Process is done running for now.
......@@ -316,6 +320,7 @@ sched(void)
intena = cpu->intena;
mtrace_fcall_register(proc->pid, 0, 0, mtrace_pause);
mtrace_call_set(0, cpunum());
swtch(&proc->context, cpu->scheduler);
cpu->intena = intena;
}
......
......@@ -133,10 +133,12 @@ syscall(void)
mtrace_fcall_register(proc->pid, (unsigned long)syscalls[num],
0,
mtrace_start);
mtrace_call_set(1, cpunum());
proc->tf->eax = syscalls[num]();
mtrace_fcall_register(proc->pid, (unsigned long)syscalls[num],
0,
mtrace_done);
mtrace_call_set(0, cpunum());
} else {
cprintf("%d %s: unknown sys call %d\n",
proc->pid, proc->name, num);
......
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论