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