22 #ifndef LELY_LIBC_TIME_H_
23 #define LELY_LIBC_TIME_H_
29 #ifndef LELY_HAVE_ITIMERSPEC
30 #if defined(_POSIX_C_SOURCE) || defined(_POSIX_TIMERS) \
31 || defined(_TIMESPEC_DEFINED)
32 #define LELY_HAVE_ITIMERSPEC 1
36 #undef LELY_HAVE_TIMESPEC
37 #if __STDC_VERSION__ >= 201112L || _MSC_VER >= 1900 \
38 || _POSIX_C_SOURCE >= 199309L || defined(__CYGWIN__) \
39 || defined(_TIMESPEC_DEFINED) || defined(__timespec_defined)
40 #define LELY_HAVE_TIMESPEC 1
43 #ifndef LELY_HAVE_TIMESPEC_GET
44 #if (__STDC_VERSION__ >= 201112L || __USE_ISOC11 || _MSC_VER >= 1900) \
46 #define LELY_HAVE_TIMESPEC_GET 1
50 #if !defined(_POSIX_C_SOURCE) && !defined(_POSIX_TIMERS) \
51 && !defined(__MINGW32__)
54 #define CLOCK_REALTIME 0
61 #define CLOCK_MONOTONIC 1
67 #define CLOCK_PROCESS_CPUTIME_ID 2
73 #define CLOCK_THREAD_CPUTIME_ID 3
76 #define TIMER_ABSTIME 1
78 #endif // !_POSIX_C_SOURCE && !_POSIX_TIMERS && !__MINGW32__
80 #if !LELY_HAVE_TIMESPEC
90 #endif // !LELY_HAVE_TIMESPEC
92 #if !LELY_HAVE_ITIMERSPEC
97 struct timespec it_interval;
99 struct timespec it_value;
102 #endif // !LELY_HAVE_ITIMERSPEC
108 #if !defined(_POSIX_TIMERS) && !defined(__MINGW32__)
125 int clock_getres(clockid_t clock_id,
struct timespec *res);
141 int clock_gettime(clockid_t clock_id,
struct timespec *tp);
173 int clock_nanosleep(clockid_t clock_id,
int flags,
const struct timespec *rqtp,
174 struct timespec *rmtp);
188 int clock_settime(clockid_t clock_id,
const struct timespec *tp);
194 int nanosleep(
const struct timespec *rqtp,
struct timespec *rmtp);
196 #endif // !_POSIX_TIMERS && !__MINGW32__
198 #if !LELY_HAVE_TIMESPEC_GET
219 #endif // !LELY_HAVE_TIMESPEC_GET
225 #endif // !LELY_LIBC_TIME_H_