|
Message-Id: <20230620074427.131-2-luoyonggang@gmail.com> Date: Tue, 20 Jun 2023 15:44:27 +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 v2 3/4] c23: Implement newly base for timespec_get These are implemented https://gustedt.gitlabpages.inria.fr/c23-library/#time_monotonic-time_active-time_thread_active with: #define TIME_UTC 1 #define TIME_MONOTONIC 2 #define TIME_ACTIVE 3 #define TIME_THREAD_ACTIVE 4 #define TIME_MONOTONIC_RAW 5 #define TIME_UTC_COARSE 6 #define TIME_MONOTONIC_COARSE 7 #define TIME_BOOTTIME 8 #define TIME_UTC_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..ab31d373 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_ACTIVE 3 +#define TIME_THREAD_ACTIVE 4 +#define TIME_MONOTONIC_RAW 5 +#define TIME_UTC_COARSE 6 +#define TIME_MONOTONIC_COARSE 7 +#define TIME_BOOTTIME 8 +#define TIME_UTC_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..b8738189 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_ACTIVE: + clockid = CLOCK_PROCESS_CPUTIME_ID; + break; + case TIME_THREAD_ACTIVE: + clockid = CLOCK_THREAD_CPUTIME_ID; + break; + case TIME_MONOTONIC_RAW: + clockid = CLOCK_MONOTONIC_RAW; + break; + case TIME_UTC_COARSE: + clockid = CLOCK_REALTIME_COARSE; + break; + case TIME_MONOTONIC_COARSE: + clockid = CLOCK_MONOTONIC_COARSE; + break; + case TIME_BOOTTIME: + clockid = CLOCK_BOOTTIME; + break; + case TIME_UTC_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.