12345678910111213141516171819202122232425262728293031 |
- #pragma once
- #ifndef MICROSLEEP_H
- #define MICROSLEEP_H
- #include "os.h"
- #include "inline_keywords.h"
- // todo: removed
- #if !defined(IS_WINDOWS)
- /* Make sure nanosleep gets defined even when using C89. */
- #if !defined(__USE_POSIX199309) || !__USE_POSIX199309
- #define __USE_POSIX199309 1
- #endif
- #include <time.h> /* For nanosleep() */
- #endif
- /* A more widely supported alternative to usleep(), based on Sleep() in Windows and nanosleep() */
- H_INLINE void microsleep(double milliseconds) {
- #if defined(IS_WINDOWS)
- Sleep((DWORD)milliseconds); /* (Unfortunately truncated to a 32-bit integer.) */
- #else
- /* Technically, nanosleep() is not an ANSI function */
- struct timespec sleepytime;
- sleepytime.tv_sec = milliseconds / 1000;
- sleepytime.tv_nsec = (milliseconds - (sleepytime.tv_sec * 1000)) * 1000000;
- nanosleep(&sleepytime, NULL);
- #endif
- }
- #endif /* MICROSLEEP_H */
|