From 5ff6ff2707b7b482efc9e172c87bd5c4106d9ed4 Mon Sep 17 00:00:00 2001 From: Flavio Cruz Date: Mon, 13 Mar 2023 01:42:12 -0400 Subject: Track task and thread time using time_value64_t. Changed kern/timer.c to use the higher precision time_value64_t. Of course, this won't suffer from the 2038 overflow but it does provide nanosecond precision (if gnumach ever uses a better timer) and moves us closer to only having time_value64_t. Message-Id: --- kern/thread.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'kern/thread.c') diff --git a/kern/thread.c b/kern/thread.c index 4a6b9eda..392d38f8 100644 --- a/kern/thread.c +++ b/kern/thread.c @@ -592,7 +592,7 @@ void thread_deallocate( task_t task; processor_set_t pset; - time_value_t user_time, system_time; + time_value64_t user_time, system_time; if (thread == THREAD_NULL) return; @@ -669,8 +669,8 @@ void thread_deallocate( * Accumulate times for dead threads in task. */ thread_read_times(thread, &user_time, &system_time); - time_value_add(&task->total_user_time, &user_time); - time_value_add(&task->total_system_time, &system_time); + time_value64_add(&task->total_user_time, &user_time); + time_value64_add(&task->total_system_time, &system_time); /* * Remove thread from task list and processor_set threads list. @@ -1522,13 +1522,16 @@ kern_return_t thread_info( /* fill in info */ - thread_read_times_rpc(thread, - &basic_info->user_time, - &basic_info->system_time); + time_value64_t user_time, system_time; + thread_read_times(thread, &user_time, &system_time); + TIME_VALUE64_TO_TIME_VALUE(&user_time, &basic_info->user_time); + TIME_VALUE64_TO_TIME_VALUE(&system_time, &basic_info->system_time); + basic_info->base_priority = thread->priority; basic_info->cur_priority = thread->sched_pri; - read_time_stamp(&thread->creation_time, - &basic_info->creation_time); + time_value64_t creation_time; + read_time_stamp(&thread->creation_time, &creation_time); + TIME_VALUE64_TO_TIME_VALUE(&creation_time, &basic_info->creation_time); /* * To calculate cpu_usage, first correct for timer rate, -- cgit v1.2.3