1 #ifndef _TIME_H 2 #define _TIME_H 3 4 #ifdef __cplusplus 5 extern "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 40 struct 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 54 clock_t clock (void); 55 time_t time (time_t *); 56 double difftime (time_t, time_t); 57 time_t mktime (struct tm *); 58 size_t strftime (char *__restrict, size_t, const char *__restrict, const struct tm *__restrict); 59 struct tm *gmtime (const time_t *); 60 struct tm *localtime (const time_t *); 61 char *asctime (const struct tm *); 62 char *ctime (const time_t *); 63 int 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 73 size_t strftime_l (char * __restrict, size_t, const char * __restrict, const struct tm * __restrict, locale_t); 74 75 struct tm *gmtime_r (const time_t *__restrict, struct tm *__restrict); 76 struct tm *localtime_r (const time_t *__restrict, struct tm *__restrict); 77 char *asctime_r (const struct tm *__restrict, char *__restrict); 78 char *ctime_r (const time_t *, char *); 79 80 void tzset (void); 81 82 struct itimerspec { 83 struct timespec it_interval; 84 struct timespec it_value; 85 }; 86 87 #define CLOCK_REALTIME 0 88 #define CLOCK_MONOTONIC 1 89 #define CLOCK_PROCESS_CPUTIME_ID 2 90 #define CLOCK_THREAD_CPUTIME_ID 3 91 #define CLOCK_MONOTONIC_RAW 4 92 #define CLOCK_REALTIME_COARSE 5 93 #define CLOCK_MONOTONIC_COARSE 6 94 #define CLOCK_BOOTTIME 7 95 #define CLOCK_REALTIME_ALARM 8 96 #define CLOCK_BOOTTIME_ALARM 9 97 #define CLOCK_SGI_CYCLE 10 98 #define CLOCK_TAI 11 99 100 #define TIMER_ABSTIME 1 101 102 int nanosleep (const struct timespec *, struct timespec *); 103 int clock_getres (clockid_t, struct timespec *); 104 int clock_gettime (clockid_t, struct timespec *); 105 int clock_settime (clockid_t, const struct timespec *); 106 int clock_nanosleep (clockid_t, int, const struct timespec *, struct timespec *); 107 int clock_getcpuclockid (pid_t, clockid_t *); 108 109 struct sigevent; 110 int timer_create (clockid_t, struct sigevent *__restrict, timer_t *__restrict); 111 int timer_delete (timer_t); 112 int timer_settime (timer_t, int, const struct itimerspec *__restrict, struct itimerspec *__restrict); 113 int timer_gettime (timer_t, struct itimerspec *); 114 int timer_getoverrun (timer_t); 115 116 extern char *tzname[2]; 117 118 #endif 119 120 121 #if defined(_XOPEN_SOURCE) || defined(_BSD_SOURCE) || defined(_GNU_SOURCE) 122 char *strptime (const char *__restrict, const char *__restrict, struct tm *__restrict); 123 extern int daylight; 124 extern long timezone; 125 extern int getdate_err; 126 struct tm *getdate (const char *); 127 #endif 128 129 130 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) 131 int stime(const time_t *); 132 time_t timegm(struct tm *); 133 #endif 134 135 #if _REDIR_TIME64 136 __REDIR(time, __time64); 137 __REDIR(difftime, __difftime64); 138 __REDIR(mktime, __mktime64); 139 __REDIR(gmtime, __gmtime64); 140 __REDIR(localtime, __localtime64); 141 __REDIR(ctime, __ctime64); 142 __REDIR(timespec_get, __timespec_get_time64); 143 #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ 144 || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ 145 || defined(_BSD_SOURCE) 146 __REDIR(gmtime_r, __gmtime64_r); 147 __REDIR(localtime_r, __localtime64_r); 148 __REDIR(ctime_r, __ctime64_r); 149 __REDIR(nanosleep, __nanosleep_time64); 150 __REDIR(clock_getres, __clock_getres_time64); 151 __REDIR(clock_gettime, __clock_gettime64); 152 __REDIR(clock_settime, __clock_settime64); 153 __REDIR(clock_nanosleep, __clock_nanosleep_time64); 154 __REDIR(timer_settime, __timer_settime64); 155 __REDIR(timer_gettime, __timer_gettime64); 156 #endif 157 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) 158 __REDIR(stime, __stime64); 159 __REDIR(timegm, __timegm_time64); 160 #endif 161 #endif 162 163 #ifdef __cplusplus 164 } 165 #endif 166 167 168 #endif 169