blob: 33cdc08f14ed1dd647b0f588fea39e82ce029842 [file] [log] [blame]
/**
* @file sleep.c System sleep functions
*
* Copyright (C) 2010 Creytiv.com
*/
#include <re_types.h>
#include <re_fmt.h>
#include <re_sys.h>
#ifdef WIN32
#include <windows.h>
#endif
#ifdef HAVE_UNISTD_H
#define _BSD_SOURCE 1
#include <unistd.h>
#endif
#ifdef HAVE_SELECT_H
#include <sys/select.h>
#endif
/**
* Blocking sleep for [us] number of microseconds
*
* @param us Number of microseconds to sleep
*/
void sys_usleep(unsigned int us)
{
if (!us)
return;
#ifdef WIN32
Sleep(us / 1000);
#elif defined(HAVE_SELECT)
do {
struct timeval tv;
tv.tv_sec = us / 1000000;
tv.tv_usec = us % 1000000;
(void)select(0, NULL, NULL, NULL, &tv);
} while (0);
#else
(void)usleep(us);
#endif
}