2019-03-27 01:31:53 +01:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include <sys/cdefs.h>
|
2019-05-28 13:48:06 +02:00
|
|
|
#include <sys/types.h>
|
2019-03-27 01:31:53 +01:00
|
|
|
|
|
|
|
|
__BEGIN_DECLS
|
|
|
|
|
|
2019-12-27 00:29:31 -03:00
|
|
|
#define timerclear(tvp) (tvp)->tv_sec = (tvp)->tv_usec = 0
|
|
|
|
|
#define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
|
|
|
|
|
#define timercmp(tvp, uvp, cmp) \
|
|
|
|
|
(((tvp)->tv_sec == (uvp)->tv_sec) ? ((tvp)->tv_usec cmp(uvp)->tv_usec) : ((tvp)->tv_sec cmp(uvp)->tv_sec))
|
2019-12-27 23:07:28 +01:00
|
|
|
#define timeradd(a, b, out) \
|
|
|
|
|
do { \
|
|
|
|
|
(out)->tv_sec = (a)->tv_sec + (b)->tv_sec; \
|
|
|
|
|
(out)->tv_usec = (a)->tv_usec + (b)->tv_usec; \
|
|
|
|
|
if ((out)->tv_usec >= 1000000) { \
|
|
|
|
|
(out)->tv_sec++; \
|
|
|
|
|
(out)->tv_usec -= 1000000; \
|
|
|
|
|
} \
|
2019-12-27 00:29:31 -03:00
|
|
|
} while (0)
|
2019-12-27 23:07:28 +01:00
|
|
|
#define timersub(a, b, out) \
|
|
|
|
|
do { \
|
|
|
|
|
(out)->tv_sec = (a)->tv_sec - (b)->tv_sec; \
|
|
|
|
|
(out)->tv_usec = (a)->tv_usec - (b)->tv_usec; \
|
|
|
|
|
if ((out)->tv_usec < 0) { \
|
|
|
|
|
(out)->tv_sec--; \
|
|
|
|
|
(out)->tv_usec += 1000000; \
|
|
|
|
|
} \
|
2019-12-27 00:29:31 -03:00
|
|
|
} while (0)
|
|
|
|
|
|
2019-05-28 13:48:06 +02:00
|
|
|
struct timeval {
|
|
|
|
|
time_t tv_sec;
|
|
|
|
|
suseconds_t tv_usec;
|
|
|
|
|
};
|
|
|
|
|
|
2019-04-21 02:59:20 +02:00
|
|
|
struct timezone {
|
|
|
|
|
int tz_minuteswest;
|
|
|
|
|
int tz_dsttime;
|
|
|
|
|
};
|
|
|
|
|
|
2019-05-28 11:53:16 +02:00
|
|
|
int gettimeofday(struct timeval* __restrict__, void* __restrict__) __attribute__((nonnull(1)));
|
2019-03-27 01:31:53 +01:00
|
|
|
|
|
|
|
|
__END_DECLS
|