diff options
author | Flavio Cruz <flaviocruz@gmail.com> | 2023-03-13 01:42:12 -0400 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2023-03-13 20:42:03 +0100 |
commit | 5ff6ff2707b7b482efc9e172c87bd5c4106d9ed4 (patch) | |
tree | 68abe2ad4b92c47deebb23bdcd54eb359d9921a9 /kern/thread.c | |
parent | f72cc8c81afe03667cc1ee70169ed343a40f4578 (diff) | |
download | gnumach-5ff6ff2707b7b482efc9e172c87bd5c4106d9ed4.tar.gz gnumach-5ff6ff2707b7b482efc9e172c87bd5c4106d9ed4.tar.bz2 gnumach-5ff6ff2707b7b482efc9e172c87bd5c4106d9ed4.zip |
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: <ZA63tGcv3bETUJFJ@jupiter.tail36e24.ts.net>
Diffstat (limited to 'kern/thread.c')
-rw-r--r-- | kern/thread.c | 19 |
1 files changed, 11 insertions, 8 deletions
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, |