aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2025-12-08 16:15:52 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2025-12-08 16:16:14 +0000
commitacd02443a952b1f5412d35d03f081ad48bae34d7 (patch)
tree8b76e1863bae4b050dbe7cd293beab064b5b96dd
parentdafe50ebd874ca3ccd5908c441cee9f478c501f0 (diff)
proc0_post: Clear relevant thread stats directly
rufetch() has several other effects besides clearing these per-thread stats most of which are explicitly discarded by the subsequent calls to ruxreset(). Just clear the relevant stats directly instead. Reviewed by: olce, kib, markj Differential Revision: https://reviews.freebsd.org/D54050
-rw-r--r--sys/kern/init_main.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/sys/kern/init_main.c b/sys/kern/init_main.c
index 8d1ee7b0fd99..4144297d674c 100644
--- a/sys/kern/init_main.c
+++ b/sys/kern/init_main.c
@@ -643,7 +643,6 @@ static void
proc0_post(void *dummy __unused)
{
struct proc *p;
- struct rusage ru;
struct thread *td;
/*
@@ -660,11 +659,15 @@ proc0_post(void *dummy __unused)
}
microuptime(&p->p_stats->p_start);
PROC_STATLOCK(p);
- rufetch(p, &ru); /* Clears thread stats */
ruxreset(&p->p_rux);
FOREACH_THREAD_IN_PROC(p, td) {
- td->td_runtime = 0;
thread_lock(td);
+ td->td_incruntime = 0;
+ td->td_runtime = 0;
+ td->td_pticks = 0;
+ td->td_sticks = 0;
+ td->td_iticks = 0;
+ td->td_uticks = 0;
ruxreset(&td->td_rux);
thread_unlock(td);
}