diff options
author | Nick Mathewson <nickm@torproject.org> | 2014-06-14 11:46:38 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2014-06-14 11:46:38 -0400 |
commit | a7cafb1ea9307864c94ad3e019af93d09d48350e (patch) | |
tree | 1c6cc26fb0a93f46d839b3cb46855c93aca135f4 /src/common/compat.c | |
parent | a58d94fb7c6c304ecba930eaa7ebbade1d0686ab (diff) | |
parent | e07d328457b26babe89abdcc1d5a550ee8273462 (diff) | |
download | tor-a7cafb1ea9307864c94ad3e019af93d09d48350e.tar.gz tor-a7cafb1ea9307864c94ad3e019af93d09d48350e.zip |
Merge branch 'bug8746_v2_squashed'
Conflicts:
src/common/include.am
Diffstat (limited to 'src/common/compat.c')
-rw-r--r-- | src/common/compat.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/common/compat.c b/src/common/compat.c index 111070cc10..e25ecc462d 100644 --- a/src/common/compat.c +++ b/src/common/compat.c @@ -114,6 +114,12 @@ /* Only use the linux prctl; the IRIX prctl is totally different */ #include <sys/prctl.h> #endif +#ifdef TOR_UNIT_TESTS +#if !defined(HAVE_USLEEP) && defined(HAVE_SYS_SELECT_H) +/* as fallback implementation for tor_sleep_msec */ +#include <sys/select.h> +#endif +#endif #include "torlog.h" #include "util.h" @@ -3556,3 +3562,23 @@ get_total_system_memory(size_t *mem_out) return 0; } +#ifdef TOR_UNIT_TESTS +/** Delay for <b>msec</b> milliseconds. Only used in tests. */ +void +tor_sleep_msec(int msec) +{ +#ifdef _WIN32 + Sleep(msec); +#elif defined(HAVE_USLEEP) + sleep(msec / 1000); + /* Some usleep()s hate sleeping more than 1 sec */ + usleep((msec % 1000) * 1000); +#elif defined(HAVE_SYS_SELECT_H) + struct timeval tv = { msec / 1000, (msec % 1000) * 1000}; + select(0, NULL, NULL, NULL, &tv); +#else + sleep(CEIL_DIV(msec, 1000)); +#endif +} +#endif + |