X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Futils_time.h;h=0fd809ac5de49327044102a9eabd9b28820abdc9;hb=fadd1df67243af6d0d4f58b10b21755ee1f433d6;hp=fecf5447780929c2fee24dd0c818d7d8bb1a2e40;hpb=1c2e242703c7dcd1de29aef49608cf89bfde5e4a;p=collectd.git diff --git a/src/utils_time.h b/src/utils_time.h index fecf5447..0fd809ac 100644 --- a/src/utils_time.h +++ b/src/utils_time.h @@ -32,7 +32,9 @@ * manner is that comparing times and calculating differences is as simple as * it is with "time_t", i.e. a simple integer comparison / subtraction works. */ -typedef uint64_t cdtime_t; +/* + * cdtime_t is defined in "collectd.h" */ +/* typedef uint64_t cdtime_t; */ /* 2^30 = 1073741824 */ #define TIME_T_TO_CDTIME_T(t) (((cdtime_t) (t)) * 1073741824) @@ -41,14 +43,28 @@ typedef uint64_t cdtime_t; #define CDTIME_T_TO_DOUBLE(t) (((double) (t)) / 1073741824.0) #define DOUBLE_TO_CDTIME_T(d) ((cdtime_t) ((d) * 1073741824.0)) -#define US_TO_CDTIME_T(us) ((cdtime_t) (((double) (us)) * 1073.741824)) -#define NS_TO_CDTIME_T(ns) ((cdtime_t) (((double) (ns)) * 1.073741824)) +#define MS_TO_CDTIME_T(ms) ((cdtime_t) (((double) (ms)) * 1073741.824)) +#define CDTIME_T_TO_MS(t) ((long) (((double) (t)) / 1073741.824)) +#define US_TO_CDTIME_T(us) ((cdtime_t) (((double) (us)) * 1073.741824)) +#define CDTIME_T_TO_US(t) ((suseconds_t) (((double) (t)) / 1073.741824)) +#define NS_TO_CDTIME_T(ns) ((cdtime_t) (((double) (ns)) * 1.073741824)) +#define CDTIME_T_TO_NS(t) ((long) (((double) (t)) / 1.073741824)) -#define TIMEVAL_TO_CDTIME_T(tv) (TIME_T_TO_CDTIME_T ((tv).tv_sec) \ - + US_TO_CDTIME_T ((tv).tv_usec)) -#define TIMESPEC_TO_CDTIME_T(ts) (TIME_T_TO_CDTIME_T ((ts).tv_sec) \ - + NS_TO_CDTIME_T ((ts).tv_nsec)) +#define CDTIME_T_TO_TIMEVAL(cdt,tvp) do { \ + (tvp)->tv_sec = CDTIME_T_TO_TIME_T (cdt); \ + (tvp)->tv_usec = CDTIME_T_TO_US ((cdt) % 1073741824); \ +} while (0) +#define TIMEVAL_TO_CDTIME_T(tv) (TIME_T_TO_CDTIME_T ((tv)->tv_sec) \ + + US_TO_CDTIME_T ((tv)->tv_usec)) + +#define CDTIME_T_TO_TIMESPEC(cdt,tsp) do { \ + (tsp)->tv_sec = CDTIME_T_TO_TIME_T (cdt); \ + (tsp)->tv_nsec = CDTIME_T_TO_NS ((cdt) % 1073741824); \ +} while (0) +#define TIMESPEC_TO_CDTIME_T(ts) (TIME_T_TO_CDTIME_T ((ts)->tv_sec) \ + + NS_TO_CDTIME_T ((ts)->tv_nsec)) cdtime_t cdtime (void); #endif /* UTILS_TIME_H */ +/* vim: set sw=2 sts=2 et : */