From: ben Date: Sat, 19 Mar 2005 19:02:53 +0000 (+0000) Subject: If it's available, try to use clock_gettime(CLOCK_MONOTONIC) rather than X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/commitdiff_plain/23193e2c5a4646c1dedf4c09a805d6fae7523a8e If it's available, try to use clock_gettime(CLOCK_MONOTONIC) rather than gettimeofday(), since the former shouldn't warp when the user resets the clock. git-svn-id: svn://svn.tartarus.org/sgt/putty@5528 cda61777-01e9-0310-a592-d414129be87e --- diff --git a/unix/uxmisc.c b/unix/uxmisc.c index 28ae83a2..0b04d211 100644 --- a/unix/uxmisc.c +++ b/unix/uxmisc.c @@ -4,21 +4,27 @@ #include #include +#include #include #include #include #include "putty.h" +/* + * We want to use milliseconds rather than microseconds or nanoseconds, + * because we need a decent number of them to fit into a 32-bit + * word so it can be used for keepalives. + */ unsigned long getticks(void) { struct timeval tv; +#ifdef CLOCK_MONOTONIC + struct timespec ts; + if (clock_gettime(CLOCK_MONOTONIC, &ts) == 0) + return ts.tv_sec * 1000 + ts.tv_nsec / 1000000; +#endif gettimeofday(&tv, NULL); - /* - * We want to use milliseconds rather than microseconds, - * because we need a decent number of them to fit into a 32-bit - * word so it can be used for keepalives. - */ return tv.tv_sec * 1000 + tv.tv_usec / 1000; }