]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
process-util: make pid*_get_start_time return usec_t
authorMike Yuan <me@yhndnzj.com>
Tue, 21 May 2024 16:23:50 +0000 (00:23 +0800)
committerMike Yuan <me@yhndnzj.com>
Wed, 22 May 2024 10:47:16 +0000 (18:47 +0800)
src/basic/process-util.c
src/basic/process-util.h
src/test/test-process-util.c

index c9d968dee0a7c4fc25a9ad4ec260646b63220a02..15839cb447343cee058f13ce5a429ffd59a820f9 100644 (file)
@@ -56,6 +56,7 @@
 #include "string-table.h"
 #include "string-util.h"
 #include "terminal-util.h"
+#include "time-util.h"
 #include "user-util.h"
 #include "utf8.h"
 
@@ -731,7 +732,7 @@ int get_process_ppid(pid_t pid, pid_t *ret) {
         return 0;
 }
 
-int pid_get_start_time(pid_t pid, uint64_t *ret) {
+int pid_get_start_time(pid_t pid, usec_t *ret) {
         _cleanup_free_ char *line = NULL;
         const char *p;
         int r;
@@ -751,13 +752,12 @@ int pid_get_start_time(pid_t pid, uint64_t *ret) {
         p = strrchr(line, ')');
         if (!p)
                 return -EIO;
-
         p++;
 
         unsigned long llu;
 
         if (sscanf(p, " "
-                   "%*c "  /* state */
+                   "%*c " /* state */
                    "%*u " /* ppid */
                    "%*u " /* pgrp */
                    "%*u " /* session */
@@ -781,13 +781,13 @@ int pid_get_start_time(pid_t pid, uint64_t *ret) {
                 return -EIO;
 
         if (ret)
-                *ret = llu;
+                *ret = jiffies_to_usec(llu); /* CLOCK_BOOTTIME */
 
         return 0;
 }
 
-int pidref_get_start_time(const PidRef *pid, uint64_t *ret) {
-        uint64_t t;
+int pidref_get_start_time(const PidRef *pid, usec_t *ret) {
+        usec_t t;
         int r;
 
         if (!pidref_is_set(pid))
index 8308402847809b8ff844570301539aa37e3b1c80..cbcb91b6eb02e6d0cc00853170e67a99be8c6340 100644 (file)
@@ -54,8 +54,8 @@ int get_process_cwd(pid_t pid, char **ret);
 int get_process_root(pid_t pid, char **ret);
 int get_process_environ(pid_t pid, char **ret);
 int get_process_ppid(pid_t pid, pid_t *ret);
-int pid_get_start_time(pid_t pid, uint64_t *ret);
-int pidref_get_start_time(const PidRef* pid, uint64_t *ret);
+int pid_get_start_time(pid_t pid, usec_t *ret);
+int pidref_get_start_time(const PidRef* pid, usec_t *ret);
 int get_process_umask(pid_t pid, mode_t *ret);
 
 int container_get_leader(const char *machine, pid_t *pid);
index c96bd4341bc226c879c5cd22d9b3e9bddf17a0f0..563d5a0fe76b9e25c3d271eac9302fdb73bb9a11 100644 (file)
@@ -951,18 +951,18 @@ TEST(pid_get_start_time) {
 
         assert_se(pidref_set_self(&pidref) >= 0);
 
-        uint64_t start_time;
+        usec_t start_time;
         assert_se(pidref_get_start_time(&pidref, &start_time) >= 0);
-        log_info("our starttime: %" PRIu64, start_time);
+        log_info("our starttime: " USEC_FMT, start_time);
 
         _cleanup_(pidref_done_sigkill_wait) PidRef child = PIDREF_NULL;
 
         assert_se(pidref_safe_fork("(stub)", FORK_RESET_SIGNALS|FORK_CLOSE_ALL_FDS, &child) >= 0);
 
-        uint64_t start_time2;
+        usec_t start_time2;
         assert_se(pidref_get_start_time(&child, &start_time2) >= 0);
 
-        log_info("child starttime: %" PRIu64, start_time2);
+        log_info("child starttime: " USEC_FMT, start_time2);
 
         assert_se(start_time2 >= start_time);
 }