Make sure reading td_runtime in critical section since thread may be
preempted and td_runtime will be modified.
This commit is contained in:
parent
1e8f5ffa35
commit
0e17ccbe36
@ -247,8 +247,9 @@ kern_clock_gettime(struct thread *td, clockid_t clock_id, struct timespec *ats)
|
||||
critical_enter();
|
||||
switchtime = PCPU_GET(switchtime);
|
||||
curtime = cpu_ticks();
|
||||
runtime = td->td_runtime;
|
||||
critical_exit();
|
||||
runtime = cputick2usec(td->td_runtime + curtime - switchtime);
|
||||
runtime = cputick2usec(runtime + curtime - switchtime);
|
||||
ats->tv_sec = runtime / 1000000;
|
||||
ats->tv_nsec = runtime % 1000000 * 1000;
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user