diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-05-09 10:17:15 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-05-09 10:17:15 +0000 |
commit | 0f1baad5a38d279cc03ff9a5a83dca12b9fb26a6 (patch) | |
tree | de7b0bb99331f154218e67e14c2585d7ff994a19 /thread.c | |
parent | 1165304a5dc5c4a2b8fce26f09e9bbeb8f0b43fc (diff) | |
download | ruby-0f1baad5a38d279cc03ff9a5a83dca12b9fb26a6.tar.gz |
* thread.c (timeofday): use monotonic clock. based on a patch
from zimbatm <zimbatm@oree.ch> in [ruby-core:16627].
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16338 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'thread.c')
-rw-r--r-- | thread.c | 15 |
1 files changed, 12 insertions, 3 deletions
@@ -674,9 +674,18 @@ rb_thread_sleep_forever() static double timeofday(void) { - struct timeval tv; - gettimeofday(&tv, NULL); - return (double)tv.tv_sec + (double)tv.tv_usec * 1e-6; +#if defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_MONOTONIC) + struct timespec tp; + + if (clock_gettime(CLOCK_MONOTONIC, &tp) == 0) { + return (double)tp.tv_sec + (double)tp.tv_nsec * 1e-9; + } else +#endif + { + struct timeval tv; + gettimeofday(&tv, NULL); + return (double)tv.tv_sec + (double)tv.tv_usec * 1e-6; + } } static void |