]> arthur.barton.de Git - netdata.git/blobdiff - src/clocks.c
Merge pull request #1788 from l2isbad/web_log_plugin_fix
[netdata.git] / src / clocks.c
index f8dc9b628342072bf4ca2eeecb4107205b5f49f1..88d3783e8e6c6233ea26ce17617b76a352890014 100644 (file)
@@ -11,55 +11,63 @@ inline int clock_gettime(clockid_t clk_id, struct timespec *ts) {
 }
 #endif
 
-inline time_t now_realtime_sec(void) {
+static inline time_t now_sec(clockid_t clk_id) {
     struct timespec ts;
-    if(unlikely(clock_gettime(CLOCK_REALTIME, &ts) == -1))
+    if(unlikely(clock_gettime(clk_id, &ts) == -1))
         return 0;
     return ts.tv_sec;
 }
 
-inline int now_realtime_timeval(struct timeval *tv) {
+static inline usec_t now_usec(clockid_t clk_id) {
+    struct timespec ts;
+    if(unlikely(clock_gettime(clk_id, &ts) == -1))
+        return 0;
+    return (usec_t)ts.tv_sec * USEC_PER_SEC + ts.tv_nsec / NSEC_PER_USEC;
+}
+
+static inline int now_timeval(clockid_t clk_id, struct timeval *tv) {
     struct timespec ts;
-    if(unlikely(clock_gettime(CLOCK_REALTIME, &ts) == -1))
+    if(unlikely(clock_gettime(clk_id, &ts) == -1))
         return -1;
     tv->tv_sec = ts.tv_sec;
     tv->tv_usec = ts.tv_nsec / NSEC_PER_USEC;
     return 0;
 }
 
+inline time_t now_realtime_sec(void) {
+    return now_sec(CLOCK_REALTIME);
+}
+
 inline usec_t now_realtime_usec(void) {
-    struct timespec ts;
-    if(unlikely(clock_gettime(CLOCK_REALTIME, &ts) == -1))
-        return 0;
-    return (usec_t)ts.tv_sec * USEC_PER_SEC + ts.tv_nsec / NSEC_PER_USEC;
+    return now_usec(CLOCK_REALTIME);
+}
+
+inline int now_realtime_timeval(struct timeval *tv) {
+    return now_timeval(CLOCK_REALTIME, tv);
 }
 
 inline time_t now_monotonic_sec(void) {
-    struct timespec ts;
-    if(unlikely(clock_gettime(CLOCK_MONOTONIC, &ts) == -1))
-        return 0;
-    return ts.tv_sec;
+    return now_sec(CLOCK_MONOTONIC);
 }
 
 inline usec_t now_monotonic_usec(void) {
-    struct timespec ts;
-    if(unlikely(clock_gettime(CLOCK_MONOTONIC, &ts) == -1))
-        return 0;
-    return (usec_t)ts.tv_sec * USEC_PER_SEC + ts.tv_nsec / NSEC_PER_USEC;
+    return now_usec(CLOCK_MONOTONIC);
+}
+
+inline int now_monotonic_timeval(struct timeval *tv) {
+    return now_timeval(CLOCK_MONOTONIC, tv);
 }
 
 inline time_t now_boottime_sec(void) {
-    struct timespec ts;
-    if(unlikely(clock_gettime(CLOCK_BOOTTIME, &ts) == -1))
-        return 0;
-    return ts.tv_sec;
+    return now_sec(CLOCK_BOOTTIME);
 }
 
 inline usec_t now_boottime_usec(void) {
-    struct timespec ts;
-    if(unlikely(clock_gettime(CLOCK_BOOTTIME, &ts) == -1))
-        return 0;
-    return (usec_t)ts.tv_sec * USEC_PER_SEC + ts.tv_nsec / NSEC_PER_USEC;
+    return now_usec(CLOCK_BOOTTIME);
+}
+
+inline int now_boottime_timeval(struct timeval *tv) {
+    return now_timeval(CLOCK_BOOTTIME, tv);
 }
 
 inline usec_t timeval_usec(struct timeval *tv) {