mirror of
git://git.musl-libc.org/musl
synced 2024-12-16 03:35:06 +00:00
ad87c2eecf
these are poorly designed (illogical argument order) and even poorly implemented (brace issues) on glibc, but unfortunately some software is using them. we could consider removing them again in the future at some point if they're documented as deprecated, but for now the simplest thing to do is just to provide them under _GNU_SOURCE.
69 lines
1.9 KiB
C
69 lines
1.9 KiB
C
#ifndef _SYS_TIME_H
|
|
#define _SYS_TIME_H
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include <features.h>
|
|
|
|
#include <sys/select.h>
|
|
|
|
int gettimeofday (struct timeval *__restrict, void *__restrict);
|
|
|
|
#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
|
|
|| defined(_BSD_SOURCE)
|
|
|
|
#define ITIMER_REAL 0
|
|
#define ITIMER_VIRTUAL 1
|
|
#define ITIMER_PROF 2
|
|
|
|
struct itimerval
|
|
{
|
|
struct timeval it_interval;
|
|
struct timeval it_value;
|
|
};
|
|
|
|
int getitimer (int, struct itimerval *);
|
|
int setitimer (int, const struct itimerval *__restrict, struct itimerval *__restrict);
|
|
int utimes (const char *, const struct timeval [2]);
|
|
|
|
#endif
|
|
|
|
#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
|
|
struct timezone {
|
|
int tz_minuteswest;
|
|
int tz_dsttime;
|
|
};
|
|
int futimes(int, const struct timeval [2]);
|
|
int futimesat(int, const char *, const struct timeval [2]);
|
|
int lutimes(const char *, const struct timeval [2]);
|
|
int settimeofday(const struct timeval *, const struct timezone *);
|
|
int adjtime (const struct timeval *, struct timeval *);
|
|
#define timerisset(t) ((t)->tv_sec || (t)->tv_usec)
|
|
#define timerclear(t) ((t)->tv_sec = (t)->tv_usec = 0)
|
|
#define timercmp(s,t,op) ((s)->tv_sec == (t)->tv_sec ? \
|
|
(s)->tv_usec op (t)->tv_usec : (s)->tv_sec op (t)->tv_sec)
|
|
#define timeradd(s,t,a) (void) ( (a)->tv_sec = (s)->tv_sec + (t)->tv_sec, \
|
|
((a)->tv_usec = (s)->tv_usec + (t)->tv_usec) >= 1000000 && \
|
|
((a)->tv_usec -= 1000000, (a)->tv_sec++) )
|
|
#define timersub(s,t,a) (void) ( (a)->tv_sec = (s)->tv_sec - (t)->tv_sec, \
|
|
((a)->tv_usec = (s)->tv_usec - (t)->tv_usec) < 0 && \
|
|
((a)->tv_usec += 1000000, (a)->tv_sec--) )
|
|
#endif
|
|
|
|
#if defined(_GNU_SOURCE)
|
|
#define TIMEVAL_TO_TIMESPEC(tv, ts) ( \
|
|
(ts)->tv_sec = (tv)->tv_sec, \
|
|
(ts)->tv_nsec = (tv)->tv_usec * 1000, \
|
|
(void)0 )
|
|
#define TIMESPEC_TO_TIMEVAL(tv, ts) ( \
|
|
(tv)->tv_sec = (ts)->tv_sec, \
|
|
(tv)->tv_usec = (ts)->tv_nsec / 1000, \
|
|
(void)0 )
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif
|