From 6eb19505bc10eb7964c4863e53ef1028944044f2 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Sat, 6 Sep 2014 12:58:09 -0400 Subject: [PATCH] add C11 timespec_get function, with associated time.h changes for C11 based on patch by Jens Gustedt for inclusion with C11 threads implementation, but committed separately since it's independent of threads. --- include/time.h | 4 +++- src/time/timespec_get.c | 12 ++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 src/time/timespec_get.c diff --git a/include/time.h b/include/time.h index dc880706..6124ef1e 100644 --- a/include/time.h +++ b/include/time.h @@ -17,11 +17,11 @@ extern "C" { #define __NEED_size_t #define __NEED_time_t #define __NEED_clock_t +#define __NEED_struct_timespec #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ || defined(_BSD_SOURCE) -#define __NEED_struct_timespec #define __NEED_clockid_t #define __NEED_timer_t #define __NEED_pid_t @@ -59,9 +59,11 @@ struct tm *gmtime (const time_t *); struct tm *localtime (const time_t *); char *asctime (const struct tm *); char *ctime (const time_t *); +int timespec_get(struct timespec *, int); #define CLOCKS_PER_SEC 1000000L +#define TIME_UTC 1 #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 new file mode 100644 index 00000000..03c5a77b --- /dev/null +++ b/src/time/timespec_get.c @@ -0,0 +1,12 @@ +#include + +int __clock_gettime(clockid_t, struct timespec *); + +/* There is no other implemented value than TIME_UTC; all other values + * are considered erroneous. */ +int timespec_get(struct timespec * ts, int base) +{ + if (base != TIME_UTC) return 0; + int ret = __clock_gettime(CLOCK_REALTIME, ts); + return ret < 0 ? 0 : base; +} -- 2.25.1