diff options
author | Rich Felker <dalias@aerifal.cx> | 2014-09-06 12:58:09 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2014-09-06 12:58:09 -0400 |
commit | 6eb19505bc10eb7964c4863e53ef1028944044f2 (patch) | |
tree | 33c3ec8604e5342916d6a58d52125e354a488128 | |
parent | 86876dbec55d9416859bbbbc9850b1ec81b6dbea (diff) | |
download | musl-6eb19505bc10eb7964c4863e53ef1028944044f2.tar.gz musl-6eb19505bc10eb7964c4863e53ef1028944044f2.tar.bz2 musl-6eb19505bc10eb7964c4863e53ef1028944044f2.tar.xz musl-6eb19505bc10eb7964c4863e53ef1028944044f2.zip |
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.
-rw-r--r-- | include/time.h | 4 | ||||
-rw-r--r-- | src/time/timespec_get.c | 12 |
2 files changed, 15 insertions, 1 deletions
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 <time.h> + +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; +} |