rspamd_get_calendar_ticks (void)
{
gdouble res;
+#ifdef HAVE_CLOCK_GETTIME
+ struct timespec ts;
+
+ clock_gettime (CLOCK_REALTIME, &ts);
+ res = ts_to_double (&ts);
+#else
struct timeval tv;
if (gettimeofday (&tv, NULL) == 0) {
- res = (gdouble)tv.tv_sec + tv.tv_usec / 1e6f;
+ res = tv_to_double (&tv);
}
else {
res = time (NULL);
}
+#endif
return res;
}
#define tv_to_double(tv) ((double)(tv)->tv_sec + (tv)->tv_usec / 1.0e6)
#define ts_to_usec(ts) ((ts)->tv_sec * 1000000LLU + \
(ts)->tv_nsec / 1000LLU)
+#define ts_to_double(tv) ((double)(tv)->tv_sec + (tv)->tv_nsec / 1.0e9)
/**
* Try to allocate a file on filesystem (using fallocate or posix_fallocate)