bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 4/6] fix rpc time value for 64 bit


From: Luca Dariz
Subject: [PATCH 4/6] fix rpc time value for 64 bit
Date: Sun, 12 Feb 2023 18:03:11 +0100

* include/mach/task_info.h: use rpc variant of time_value_t
* include/mach/thread_info.h: Likewise
* kern/mach_clock.c: use rpc variant of time_value_t in
  read_time_stamp()
* kern/mach_clock.h: Likewise
* kern/thread.c: use rpc variant of thread_read_times()
* kern/timer.h_ add thread_read_times_rpc() by converting time_value_t
  to the corresponding rpc structures inline.
---
 include/mach/task_info.h   | 10 +++++-----
 include/mach/thread_info.h |  6 +++---
 kern/mach_clock.c          |  2 +-
 kern/mach_clock.h          |  2 +-
 kern/thread.c              |  2 +-
 kern/timer.h               | 12 ++++++++++++
 6 files changed, 23 insertions(+), 11 deletions(-)

diff --git a/include/mach/task_info.h b/include/mach/task_info.h
index 3aaa7cd6..f448ee04 100644
--- a/include/mach/task_info.h
+++ b/include/mach/task_info.h
@@ -56,11 +56,11 @@ struct task_basic_info {
        integer_t       base_priority;  /* base scheduling priority */
        rpc_vm_size_t   virtual_size;   /* number of virtual pages */
        rpc_vm_size_t   resident_size;  /* number of resident pages */
-       time_value_t    user_time;      /* total user run time for
+       rpc_time_value_t        user_time;      /* total user run time for
                                           terminated threads */
-       time_value_t    system_time;    /* total system run time for
+       rpc_time_value_t        system_time;    /* total system run time for
                                           terminated threads */
-       time_value_t    creation_time;  /* creation time stamp */
+       rpc_time_value_t        creation_time;  /* creation time stamp */
 };
 
 typedef struct task_basic_info         task_basic_info_data_t;
@@ -89,9 +89,9 @@ typedef struct task_events_info               
*task_events_info_t;
                                           only accurate if suspended */
 
 struct task_thread_times_info {
-       time_value_t    user_time;      /* total user run time for
+       rpc_time_value_t        user_time;      /* total user run time for
                                           live threads */
-       time_value_t    system_time;    /* total system run time for
+       rpc_time_value_t        system_time;    /* total system run time for
                                           live threads */
 };
 
diff --git a/include/mach/thread_info.h b/include/mach/thread_info.h
index 569c8c84..46c1ceca 100644
--- a/include/mach/thread_info.h
+++ b/include/mach/thread_info.h
@@ -55,8 +55,8 @@ typedef       integer_t       
thread_info_data_t[THREAD_INFO_MAX];
 #define THREAD_BASIC_INFO      1               /* basic information */
 
 struct thread_basic_info {
-       time_value_t    user_time;      /* user run time */
-       time_value_t    system_time;    /* system run time */
+       rpc_time_value_t        user_time;      /* user run time */
+       rpc_time_value_t        system_time;    /* system run time */
        integer_t       cpu_usage;      /* scaled cpu usage percentage */
        integer_t       base_priority;  /* base scheduling priority */
        integer_t       cur_priority;   /* current scheduling priority */
@@ -65,7 +65,7 @@ struct thread_basic_info {
        integer_t       suspend_count;  /* suspend count for thread */
        integer_t       sleep_time;     /* number of seconds that thread
                                           has been sleeping */
-       time_value_t    creation_time;  /* time stamp of creation */
+       rpc_time_value_t        creation_time;  /* time stamp of creation */
 };
 
 typedef struct thread_basic_info       thread_basic_info_data_t;
diff --git a/kern/mach_clock.c b/kern/mach_clock.c
index 09717d16..ed38c76b 100644
--- a/kern/mach_clock.c
+++ b/kern/mach_clock.c
@@ -429,7 +429,7 @@ record_time_stamp(time_value_t *stamp)
  * real-time clock frame.
  */
 void
-read_time_stamp (const time_value_t *stamp, time_value_t *result)
+read_time_stamp (const time_value_t *stamp, rpc_time_value_t *result)
 {
        time_value64_t result64;
        TIME_VALUE_TO_TIME_VALUE64(stamp, &result64);
diff --git a/kern/mach_clock.h b/kern/mach_clock.h
index 7e8d3046..9a670011 100644
--- a/kern/mach_clock.h
+++ b/kern/mach_clock.h
@@ -98,7 +98,7 @@ extern void record_time_stamp (time_value_t *stamp);
  * Read a timestamp in STAMP into RESULT.  Returns values in the
  * real-time clock frame.
  */
-extern void read_time_stamp (const time_value_t *stamp, time_value_t *result);
+extern void read_time_stamp (const time_value_t *stamp, rpc_time_value_t 
*result);
 
 extern void mapable_time_init (void);
 
diff --git a/kern/thread.c b/kern/thread.c
index 17cc458c..4a6b9eda 100644
--- a/kern/thread.c
+++ b/kern/thread.c
@@ -1522,7 +1522,7 @@ kern_return_t thread_info(
 
            /* fill in info */
 
-           thread_read_times(thread,
+           thread_read_times_rpc(thread,
                        &basic_info->user_time,
                        &basic_info->system_time);
            basic_info->base_priority   = thread->priority;
diff --git a/kern/timer.h b/kern/timer.h
index 35782b41..89790230 100644
--- a/kern/timer.h
+++ b/kern/timer.h
@@ -134,6 +134,18 @@ extern unsigned            timer_delta(timer_t, 
timer_save_t);
 extern void            timer_normalize(timer_t);
 extern void            timer_init(timer_t);
 
+static inline void
+thread_read_times_rpc(thread_t thread,
+                      rpc_time_value_t *user_time_p, rpc_time_value_t 
*system_time_p)
+{
+  time_value_t user_p, system_p;
+  thread_read_times(thread, &user_p, &system_p);
+  user_time_p->seconds = user_p.seconds;
+  user_time_p->microseconds = user_p.microseconds;
+  system_time_p->seconds = system_p.seconds;
+  system_time_p->microseconds = system_p.microseconds;
+}
+
 #if    STAT_TIME
 /*
  *     Macro to bump timer values.
-- 
2.30.2




reply via email to

[Prev in Thread] Current Thread [Next in Thread]