diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-03-05 18:16:28 +0000 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-03-05 18:16:28 +0000 |
commit | f2d8ad8d000772fff31a5062513550dce48db149 (patch) | |
tree | 14702072fcc9c66839696e74a165cf6e99cb9ddb | |
parent | 988cb2cc8399b16042f06108954af9abf4cf46a5 (diff) | |
download | rspamd-f2d8ad8d000772fff31a5062513550dce48db149.tar.gz rspamd-f2d8ad8d000772fff31a5062513550dce48db149.zip |
Add portable get_ticks function.
-rw-r--r-- | src/libutil/util.c | 21 | ||||
-rw-r--r-- | src/libutil/util.h | 6 |
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 |