1#ifndef _TIME_H 2#define _TIME_H 3 4#ifdef __cplusplus 5extern "C" { 6#endif 7 8#include <features.h> 9 10#if __cplusplus >= 201103L 11#define NULL nullptr 12#elif defined(__cplusplus) 13#define NULL 0L 14#else 15#define NULL ((void*)0) 16#endif 17 18 19#define __NEED_size_t 20#define __NEED_time_t 21#define __NEED_clock_t 22#define __NEED_struct_timespec 23 24#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ 25 || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ 26 || defined(_BSD_SOURCE) 27#define __NEED_clockid_t 28#define __NEED_timer_t 29#define __NEED_pid_t 30#define __NEED_locale_t 31#endif 32 33#include <bits/alltypes.h> 34 35#if defined(_BSD_SOURCE) || defined(_GNU_SOURCE) 36#define __tm_gmtoff tm_gmtoff 37#define __tm_zone tm_zone 38#endif 39 40struct tm { 41 int tm_sec; 42 int tm_min; 43 int tm_hour; 44 int tm_mday; 45 int tm_mon; 46 int tm_year; 47 int tm_wday; 48 int tm_yday; 49 int tm_isdst; 50 long __tm_gmtoff; 51 const char *__tm_zone; 52}; 53 54clock_t clock (void); 55time_t time (time_t *); 56double difftime (time_t, time_t); 57time_t mktime (struct tm *); 58size_t strftime (char *__restrict, size_t, const char *__restrict, const struct tm *__restrict); 59struct tm *gmtime (const time_t *); 60struct tm *localtime (const time_t *); 61char *asctime (const struct tm *); 62char *ctime (const time_t *); 63int timespec_get(struct timespec *, int); 64 65#define CLOCKS_PER_SEC 1000000L 66 67#define TIME_UTC 1 68 69#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ 70 || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ 71 || defined(_BSD_SOURCE) 72 73size_t strftime_l (char * __restrict, size_t, const char * __restrict, const struct tm * __restrict, locale_t); 74 75struct tm *gmtime_r (const time_t *__restrict, struct tm *__restrict); 76struct tm *localtime_r (const time_t *__restrict, struct tm *__restrict); 77struct tm *localtime_noenv_r(const time_t *__restrict, struct tm *__restrict); 78char *asctime_r (const struct tm *__restrict, char *__restrict); 79char *ctime_r (const time_t *, char *); 80 81void tzset (void); 82 83struct itimerspec { 84 struct timespec it_interval; 85 struct timespec it_value; 86}; 87 88#define CLOCK_REALTIME 0 89#define CLOCK_MONOTONIC 1 90#define CLOCK_PROCESS_CPUTIME_ID 2 91#define CLOCK_THREAD_CPUTIME_ID 3 92#define CLOCK_MONOTONIC_RAW 4 93#define CLOCK_REALTIME_COARSE 5 94#define CLOCK_MONOTONIC_COARSE 6 95#define CLOCK_BOOTTIME 7 96#define CLOCK_REALTIME_ALARM 8 97#define CLOCK_BOOTTIME_ALARM 9 98#define CLOCK_SGI_CYCLE 10 99#define CLOCK_TAI 11 100 101#define TIMER_ABSTIME 1 102 103int nanosleep (const struct timespec *, struct timespec *); 104int clock_getres (clockid_t, struct timespec *); 105int clock_gettime (clockid_t, struct timespec *); 106int clock_settime (clockid_t, const struct timespec *); 107int clock_nanosleep (clockid_t, int, const struct timespec *, struct timespec *); 108int clock_getcpuclockid (pid_t, clockid_t *); 109 110struct sigevent; 111int timer_create (clockid_t, struct sigevent *__restrict, timer_t *__restrict); 112int timer_delete (timer_t); 113int timer_settime (timer_t, int, const struct itimerspec *__restrict, struct itimerspec *__restrict); 114int timer_gettime (timer_t, struct itimerspec *); 115int timer_getoverrun (timer_t); 116 117extern char *tzname[2]; 118 119#endif 120 121 122#if defined(_XOPEN_SOURCE) || defined(_BSD_SOURCE) || defined(_GNU_SOURCE) 123char *strptime (const char *__restrict, const char *__restrict, struct tm *__restrict); 124extern int daylight; 125extern long timezone; 126extern int getdate_err; 127struct tm *getdate (const char *); 128#endif 129 130 131#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) 132int stime(const time_t *); 133time_t timegm(struct tm *); 134#endif 135 136#if _REDIR_TIME64 137__REDIR(time, __time64); 138__REDIR(difftime, __difftime64); 139__REDIR(mktime, __mktime64); 140__REDIR(gmtime, __gmtime64); 141__REDIR(localtime, __localtime64); 142__REDIR(ctime, __ctime64); 143__REDIR(timespec_get, __timespec_get_time64); 144#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ 145 || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ 146 || defined(_BSD_SOURCE) 147__REDIR(gmtime_r, __gmtime64_r); 148__REDIR(localtime_r, __localtime64_r); 149__REDIR(ctime_r, __ctime64_r); 150__REDIR(nanosleep, __nanosleep_time64); 151__REDIR(clock_getres, __clock_getres_time64); 152__REDIR(clock_gettime, __clock_gettime64); 153__REDIR(clock_settime, __clock_settime64); 154__REDIR(clock_nanosleep, __clock_nanosleep_time64); 155__REDIR(timer_settime, __timer_settime64); 156__REDIR(timer_gettime, __timer_gettime64); 157#endif 158#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) 159__REDIR(stime, __stime64); 160__REDIR(timegm, __timegm_time64); 161#endif 162#endif 163 164#ifdef __cplusplus 165} 166#endif 167 168 169#endif 170