|
|
Message-Id: <20230620002507.796-4-luoyonggang@gmail.com>
Date: Tue, 20 Jun 2023 08:25:06 +0800
From: Yonggang Luo <luoyonggang@...il.com>
To: Jens Gustedt <jens.gustedt@...ia.fr>,
musl@...ts.openwall.com
Cc: Yonggang Luo <luoyonggang@...il.com>
Subject: [PATCH 3/4] c23: Implement newly base for timespec_get
These are:
#define TIME_MONOTONIC 2
#define TIME_PROCESS_CPUTIME_ID 3
#define TIME_THREAD_CPUTIME_ID 4
#define TIME_MONOTONIC_RAW 5
#define TIME_REALTIME_COARSE 6
#define TIME_MONOTONIC_COARSE 7
#define TIME_BOOTTIME 8
#define TIME_REALTIME_ALARM 9
#define TIME_BOOTTIME_ALARM 10
#define TIME_SGI_CYCLE 11
#define TIME_TAI 12
Signed-off-by: Yonggang Luo <luoyonggang@...il.com>
---
include/time.h | 13 +++++++++++-
src/time/timespec_get.c | 44 +++++++++++++++++++++++++++++++++++++++--
2 files changed, 54 insertions(+), 3 deletions(-)
diff --git a/include/time.h b/include/time.h
index 3d948372..de6d9f38 100644
--- a/include/time.h
+++ b/include/time.h
@@ -64,7 +64,18 @@ int timespec_get(struct timespec *, int);
#define CLOCKS_PER_SEC 1000000L
-#define TIME_UTC 1
+#define TIME_UTC 1
+#define TIME_MONOTONIC 2
+#define TIME_PROCESS_CPUTIME_ID 3
+#define TIME_THREAD_CPUTIME_ID 4
+#define TIME_MONOTONIC_RAW 5
+#define TIME_REALTIME_COARSE 6
+#define TIME_MONOTONIC_COARSE 7
+#define TIME_BOOTTIME 8
+#define TIME_REALTIME_ALARM 9
+#define TIME_BOOTTIME_ALARM 10
+#define TIME_SGI_CYCLE 11
+#define TIME_TAI 12
#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
|| defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
diff --git a/src/time/timespec_get.c b/src/time/timespec_get.c
index 40ea9c1c..bfc753ee 100644
--- a/src/time/timespec_get.c
+++ b/src/time/timespec_get.c
@@ -4,7 +4,47 @@
* are considered erroneous. */
int timespec_get(struct timespec * ts, int base)
{
- if (base != TIME_UTC) return 0;
- int ret = __clock_gettime(CLOCK_REALTIME, ts);
+ clockid_t clockid = -1;
+ switch (base) {
+ default:
+ return 0;
+ case TIME_UTC:
+ clockid = CLOCK_REALTIME;
+ break;
+ case TIME_MONOTONIC:
+ clockid = CLOCK_MONOTONIC;
+ break;
+ case TIME_PROCESS_CPUTIME_ID:
+ clockid = CLOCK_PROCESS_CPUTIME_ID;
+ break;
+ case TIME_THREAD_CPUTIME_ID:
+ clockid = CLOCK_THREAD_CPUTIME_ID;
+ break;
+ case TIME_MONOTONIC_RAW:
+ clockid = CLOCK_MONOTONIC_RAW;
+ break;
+ case TIME_REALTIME_COARSE:
+ clockid = CLOCK_REALTIME_COARSE;
+ break;
+ case TIME_MONOTONIC_COARSE:
+ clockid = CLOCK_MONOTONIC_COARSE;
+ break;
+ case TIME_BOOTTIME:
+ clockid = CLOCK_BOOTTIME;
+ break;
+ case TIME_REALTIME_ALARM:
+ clockid = CLOCK_REALTIME_ALARM;
+ break;
+ case TIME_BOOTTIME_ALARM:
+ clockid = CLOCK_BOOTTIME_ALARM;
+ break;
+ case TIME_SGI_CYCLE:
+ clockid = CLOCK_SGI_CYCLE;
+ break;
+ case TIME_TAI:
+ clockid = CLOCK_TAI;
+ break;
+ }
+ int ret = __clock_gettime(clockid, ts);
return ret < 0 ? 0 : base;
}
--
2.39.0.windows.1
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.