summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: a762b2b)
raw | patch | inline | side by side (parent: a762b2b)
author | Florian Forster <octo@collectd.org> | |
Wed, 26 Oct 2016 15:09:17 +0000 (17:09 +0200) | ||
committer | Florian Forster <octo@collectd.org> | |
Wed, 26 Oct 2016 15:09:19 +0000 (17:09 +0200) |
This allows to take the address of all these macros. Unfortunately, this
means we require special macors for initializing static variables, but
fortunately this is not very commonly done.
means we require special macors for initializing static variables, but
fortunately this is not very commonly done.
src/daemon/plugin.c | patch | blob | history | |
src/daemon/utils_time.h | patch | blob | history | |
src/rrdtool.c | patch | blob | history |
diff --git a/src/daemon/plugin.c b/src/daemon/plugin.c
index aa133786e60c40933c87b02b8fdd63c6f52b8cb7..8b84e6a7920583c48ea3f6570dc9a900b9ec79d6 100644 (file)
--- a/src/daemon/plugin.c
+++ b/src/daemon/plugin.c
static char *plugindir = NULL;
#ifndef DEFAULT_MAX_READ_INTERVAL
-# define DEFAULT_MAX_READ_INTERVAL TIME_T_TO_CDTIME_T (86400)
+# define DEFAULT_MAX_READ_INTERVAL TIME_T_TO_CDTIME_T_STATIC (86400)
#endif
static c_heap_t *read_heap = NULL;
static llist_t *read_list;
index f9973698ec2a59923d0204b5918370bc57c7d4dd..2d83e0bbc5639620b8d69d47288a51d13ade4fad 100644 (file)
--- a/src/daemon/utils_time.h
+++ b/src/daemon/utils_time.h
/* typedef uint64_t cdtime_t; */
/* 2^30 = 1073741824 */
-#define TIME_T_TO_CDTIME_T(t) (((cdtime_t) (t)) << 30)
-
-#define MS_TO_CDTIME_T(ms) (((((cdtime_t) (ms)) / 1000) << 30) | \
- ((((((cdtime_t) (ms)) % 1000) << 30) + 500) / 1000))
-#define US_TO_CDTIME_T(us) (((((cdtime_t) (us)) / 1000000) << 30) | \
- ((((((cdtime_t) (us)) % 1000000) << 30) + 500000) / 1000000))
-#define NS_TO_CDTIME_T(ns) (((((cdtime_t) (ns)) / 1000000000) << 30) | \
- ((((((cdtime_t) (ns)) % 1000000000) << 30) + 500000000) / 1000000000))
-
-#define CDTIME_T_TO_TIME_T(t) ((time_t) (((t) + (1 << 29)) >> 30))
-#define CDTIME_T_TO_MS(t) ((uint64_t) ((((t) >> 30) * 1000) + \
- ((((t) & 0x3fffffff) * 1000 + (1 << 29)) >> 30)))
-#define CDTIME_T_TO_US(t) ((uint64_t) ((((t) >> 30) * 1000000) + \
- ((((t) & 0x3fffffff) * 1000000 + (1 << 29)) >> 30)))
-#define CDTIME_T_TO_NS(t) ((uint64_t) ((((t) >> 30) * 1000000000) + \
- ((((t) & 0x3fffffff) * 1000000000 + (1 << 29)) >> 30)))
-
-#define CDTIME_T_TO_DOUBLE(t) (((double) (t)) / 1073741824.0)
-#define DOUBLE_TO_CDTIME_T(d) ((cdtime_t) ((d) * 1073741824.0))
-
-#define CDTIME_T_TO_TIMEVAL(t) (struct timeval) { \
- .tv_sec = (time_t) ((t) >> 30), \
- .tv_usec = (suseconds_t) ((((t) & 0x3fffffff) * 1000000 + (1 << 29)) >> 30), \
-}
-#define TIMEVAL_TO_CDTIME_T(tv) US_TO_CDTIME_T(1000000 * (tv)->tv_sec + (tv)->tv_usec)
-
-#define CDTIME_T_TO_TIMESPEC(t) (struct timespec) { \
- .tv_sec = (time_t) ((t) >> 30), \
- .tv_nsec = (long) ((((t) & 0x3fffffff) * 1000000000 + (1 << 29)) >> 30), \
-}
-#define TIMESPEC_TO_CDTIME_T(ts) NS_TO_CDTIME_T(1000000000ULL * (ts)->tv_sec + (ts)->tv_nsec)
-
-cdtime_t cdtime (void);
-
-#define RFC3339_SIZE 26 /* 2006-01-02T15:04:05+00:00 */
-#define RFC3339NANO_SIZE 36 /* 2006-01-02T15:04:05.999999999+00:00 */
+#define TIME_T_TO_CDTIME_T_STATIC(t) (((cdtime_t)(t)) << 30)
+#define TIME_T_TO_CDTIME_T(t) \
+ (cdtime_t) { TIME_T_TO_CDTIME_T_STATIC(t) }
+
+#define MS_TO_CDTIME_T(ms) \
+ (cdtime_t) { \
+ ((((cdtime_t)(ms)) / 1000) << 30) | \
+ ((((((cdtime_t)(ms)) % 1000) << 30) + 500) / 1000) \
+ }
+#define US_TO_CDTIME_T(us) \
+ (cdtime_t) { \
+ ((((cdtime_t)(us)) / 1000000) << 30) | \
+ ((((((cdtime_t)(us)) % 1000000) << 30) + 500000) / 1000000) \
+ }
+#define NS_TO_CDTIME_T(ns) \
+ (cdtime_t) { \
+ ((((cdtime_t)(ns)) / 1000000000) << 30) | \
+ ((((((cdtime_t)(ns)) % 1000000000) << 30) + 500000000) / 1000000000) \
+ }
+
+#define CDTIME_T_TO_TIME_T(t) \
+ (time_t) { (time_t)(((t) + (1 << 29)) >> 30) }
+#define CDTIME_T_TO_MS(t) \
+ (uint64_t) { \
+ (uint64_t)((((t) >> 30) * 1000) + \
+ ((((t)&0x3fffffff) * 1000 + (1 << 29)) >> 30)) \
+ }
+#define CDTIME_T_TO_US(t) \
+ (uint64_t) { \
+ (uint64_t)((((t) >> 30) * 1000000) + \
+ ((((t)&0x3fffffff) * 1000000 + (1 << 29)) >> 30)) \
+ }
+#define CDTIME_T_TO_NS(t) \
+ (uint64_t) { \
+ (uint64_t)((((t) >> 30) * 1000000000) + \
+ ((((t)&0x3fffffff) * 1000000000 + (1 << 29)) >> 30)) \
+ }
+
+#define CDTIME_T_TO_DOUBLE(t) \
+ (double) { ((double)(t)) / 1073741824.0 }
+#define DOUBLE_TO_CDTIME_T(d) \
+ (cdtime_t) { (cdtime_t)((d)*1073741824.0) }
+
+#define CDTIME_T_TO_TIMEVAL(t) \
+ (struct timeval) { \
+ .tv_sec = (time_t)((t) >> 30), \
+ .tv_usec = (suseconds_t)((((t)&0x3fffffff) * 1000000 + (1 << 29)) >> 30), \
+ }
+#define TIMEVAL_TO_CDTIME_T(tv) \
+ US_TO_CDTIME_T(1000000 * (tv)->tv_sec + (tv)->tv_usec)
+
+#define CDTIME_T_TO_TIMESPEC(t) \
+ (struct timespec) { \
+ .tv_sec = (time_t)((t) >> 30), \
+ .tv_nsec = (long)((((t)&0x3fffffff) * 1000000000 + (1 << 29)) >> 30), \
+ }
+#define TIMESPEC_TO_CDTIME_T(ts) \
+ NS_TO_CDTIME_T(1000000000ULL * (ts)->tv_sec + (ts)->tv_nsec)
+
+cdtime_t cdtime(void);
+
+#define RFC3339_SIZE 26 /* 2006-01-02T15:04:05+00:00 */
+#define RFC3339NANO_SIZE 36 /* 2006-01-02T15:04:05.999999999+00:00 */
/* rfc3339 formats a cdtime_t time as UTC in RFC 3339 zulu format with second
* precision, e.g., "2006-01-02T15:04:05Z". */
-int rfc3339 (char *buffer, size_t buffer_size, cdtime_t t);
+int rfc3339(char *buffer, size_t buffer_size, cdtime_t t);
/* rfc3339nano formats a cdtime_t as UTC time in RFC 3339 zulu format with
* nanosecond precision, e.g., "2006-01-02T15:04:05.999999999Z". */
-int rfc3339nano (char *buffer, size_t buffer_size, cdtime_t t);
+int rfc3339nano(char *buffer, size_t buffer_size, cdtime_t t);
/* rfc3339 formats a cdtime_t time as local in RFC 3339 format with second
* precision, e.g., "2006-01-02T15:04:05+00:00". */
-int rfc3339_local (char *buffer, size_t buffer_size, cdtime_t t);
+int rfc3339_local(char *buffer, size_t buffer_size, cdtime_t t);
/* rfc3339nano formats a cdtime_t time as local in RFC 3339 format with
* nanosecond precision, e.g., "2006-01-02T15:04:05.999999999+00:00". */
-int rfc3339nano_local (char *buffer, size_t buffer_size, cdtime_t t);
+int rfc3339nano_local(char *buffer, size_t buffer_size, cdtime_t t);
#endif /* UTILS_TIME_H */
/* vim: set sw=2 sts=2 et : */
diff --git a/src/rrdtool.c b/src/rrdtool.c
index 094dd42a7a6b8217a5fec858ec0683a535342be1..f5e01c81fe522d4fba76842156540594a24d3ef3 100644 (file)
--- a/src/rrdtool.c
+++ b/src/rrdtool.c
* ALWAYS lock `cache_lock' first! */
static cdtime_t cache_timeout = 0;
static cdtime_t cache_flush_timeout = 0;
-static cdtime_t random_timeout = TIME_T_TO_CDTIME_T (1);
+static cdtime_t random_timeout = TIME_T_TO_CDTIME_T_STATIC (1);
static cdtime_t cache_flush_last;
static c_avl_tree_t *cache = NULL;
static pthread_mutex_t cache_lock = PTHREAD_MUTEX_INITIALIZER;