aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2015-03-05 18:16:28 +0000
committerVsevolod Stakhov <vsevolod@highsecure.ru>2015-03-05 18:16:28 +0000
commitf2d8ad8d000772fff31a5062513550dce48db149 (patch)
tree14702072fcc9c66839696e74a165cf6e99cb9ddb
parent988cb2cc8399b16042f06108954af9abf4cf46a5 (diff)
downloadrspamd-f2d8ad8d000772fff31a5062513550dce48db149.tar.gz
rspamd-f2d8ad8d000772fff31a5062513550dce48db149.zip
Add portable get_ticks function.
-rw-r--r--src/libutil/util.c21
-rw-r--r--src/libutil/util.h6
2 files changed, 27 insertions, 0 deletions
diff --git a/src/libutil/util.c b/src/libutil/util.c
index b2435dc8d..2a64b9c10 100644
--- a/src/libutil/util.c
+++ b/src/libutil/util.c
@@ -45,6 +45,10 @@
#include <readpassphrase.h>
#endif
+#ifdef __APPLE__
+#include <mach/mach_time.h>
+#endif
+
/* Check log messages intensity once per minute */
#define CHECK_TIME 60
/* More than 2 log messages per second */
@@ -2233,6 +2237,23 @@ rspamd_decode_base32 (const gchar *in, gsize inlen, gsize *outlen)
return res;
}
+gdouble
+rspamd_get_ticks (void)
+{
+ gdouble res;
+
+#ifdef __APPLE__
+ res = mach_absolute_time () / 1000000000.;
+#else
+ struct timespec ts;
+ clock_gettime (CLOCK_MONOTONIC, &ts);
+
+ res = (double)ts.tv_sec + ts.tv_nsec / 1000000000.;
+#endif
+
+ return res;
+}
+
/* Required for tweetnacl */
void
randombytes (guchar *buf, guint64 len)
diff --git a/src/libutil/util.h b/src/libutil/util.h
index 9e90b1089..8e3fe090f 100644
--- a/src/libutil/util.h
+++ b/src/libutil/util.h
@@ -435,4 +435,10 @@ gchar * rspamd_encode_base32 (const guchar *in, gsize inlen);
*/
guchar* rspamd_decode_base32 (const gchar *in, gsize inlen, gsize *outlen);
+/**
+ * Portably return the current clock ticks as seconds
+ * @return
+ */
+gdouble rspamd_get_ticks (void);
+
#endif