forked from OSchip/llvm-project
34 lines
693 B
C
34 lines
693 B
C
|
#ifndef MY_SLEEP_H
|
||
|
#define MY_SLEEP_H
|
||
|
|
||
|
/*! Utility function to have a sleep function with better resolution and
|
||
|
* which only stops one thread. */
|
||
|
|
||
|
#include <stdio.h>
|
||
|
#include <stdlib.h>
|
||
|
#include <errno.h>
|
||
|
#include <time.h>
|
||
|
|
||
|
#if defined(_WIN32)
|
||
|
# include <windows.h>
|
||
|
// Windows version of my_sleep() function
|
||
|
static void my_sleep(double sleeptime) {
|
||
|
DWORD ms = (DWORD) (sleeptime * 1000.0);
|
||
|
Sleep(ms);
|
||
|
}
|
||
|
|
||
|
|
||
|
#else // _WIN32
|
||
|
|
||
|
// Unices version of my_sleep() function
|
||
|
static void my_sleep(double sleeptime) {
|
||
|
struct timespec ts;
|
||
|
ts.tv_sec = (time_t)sleeptime;
|
||
|
ts.tv_nsec = (long)((sleeptime - (double)ts.tv_sec) * 1E9);
|
||
|
nanosleep(&ts, NULL);
|
||
|
}
|
||
|
|
||
|
#endif // _WIN32
|
||
|
|
||
|
#endif // MY_SLEEP_H
|