diff options
Diffstat (limited to 'sys/kern/kern_exit.c')
-rw-r--r-- | sys/kern/kern_exit.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/kern/kern_exit.c b/sys/kern/kern_exit.c index 440ee3a..08cbb28 100644 --- a/sys/kern/kern_exit.c +++ b/sys/kern/kern_exit.c @@ -118,6 +118,7 @@ exit1(p, rv) register struct proc *q, *nq; register struct vmspace *vm; struct exitlist *ep; + struct timeval new_switchtime; if (p->p_pid == 1) { printf("init died (signal %d, exit %d)\n", @@ -325,7 +326,10 @@ exit1(p, rv) * directly. Set it now so that the rest of the exit time gets * counted somewhere if possible. */ - microuptime(PCPU_PTR(switchtime)); + mtx_lock_spin(&sched_lock); + microuptime(&new_switchtime); + PCPU_SET(switchtime, new_switchtime); + mtx_unlock_spin(&sched_lock); PCPU_SET(switchticks, ticks); /* |