aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--udelay.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/udelay.c b/udelay.c
index c03bcc45..7c6961d1 100644
--- a/udelay.c
+++ b/udelay.c
@@ -22,6 +22,7 @@
#ifndef __LIBPAYLOAD__
#include <unistd.h>
+#include <time.h>
#include <sys/time.h>
#include <stdlib.h>
#include <limits.h>
@@ -174,9 +175,11 @@ void internal_sleep(unsigned int usecs)
{
#if IS_WINDOWS
Sleep((usecs + 999) / 1000);
-#else
+#elif defined(__DJGPP__)
sleep(usecs / 1000000);
usleep(usecs % 1000000);
+#else
+ nanosleep(&(struct timespec){usecs / 1000000, (usecs * 1000) % 1000000000UL}, NULL);
#endif
}