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 #ifndef 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
44 #ifndef LELY_HAVE_TIMESPEC_GET
45 #if (__STDC_VERSION__ >= 201112L || __USE_ISOC11 || _MSC_VER >= 1900) \
47 #define LELY_HAVE_TIMESPEC_GET 1
51 #if !defined(_POSIX_C_SOURCE) && !defined(_POSIX_TIMERS) \
52 && !defined(__MINGW32__)
54 #ifndef CLOCK_REALTIME
55 #define CLOCK_REALTIME 0
64 #define CLOCK_MONOTONIC 1
70 #define CLOCK_PROCESS_CPUTIME_ID 2
76 #define CLOCK_THREAD_CPUTIME_ID 3
79 #define TIMER_ABSTIME 1
83 #endif // !_POSIX_C_SOURCE && !_POSIX_TIMERS && !__MINGW32__
85 #if !LELY_HAVE_TIMESPEC
95 #endif // !LELY_HAVE_TIMESPEC
97 #if !LELY_HAVE_ITIMERSPEC
102 struct timespec it_interval;
104 struct timespec it_value;
107 #endif // !LELY_HAVE_ITIMERSPEC
113 #if !defined(_POSIX_TIMERS) && !defined(__MINGW32__)
130 int clock_getres(clockid_t clock_id,
struct timespec *res);
146 int clock_gettime(clockid_t clock_id,
struct timespec *tp);
178 int clock_nanosleep(clockid_t clock_id,
int flags,
const struct timespec *rqtp,
179 struct timespec *rmtp);
193 int clock_settime(clockid_t clock_id,
const struct timespec *tp);
199 int nanosleep(
const struct timespec *rqtp,
struct timespec *rmtp);
201 #endif // !_POSIX_TIMERS && !__MINGW32__
203 #if !LELY_HAVE_TIMESPEC_GET
224 #endif // !LELY_HAVE_TIMESPEC_GET
230 #endif // !LELY_LIBC_TIME_H_