summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/time.h4
-rw-r--r--src/time/timespec_get.c12
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;
+}