#pragma once #ifdef __cplusplus extern "C" { #endif #include <features.h> #include <bits/null.h> #define __NEED_size_t #define __NEED_time_t #define __NEED_clock_t #define __NEED_struct_timespec #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) || \ defined(_GNU_SOURCE) || defined(_BSD_SOURCE) #define __NEED_clockid_t #define __NEED_timer_t #define __NEED_pid_t #endif #include <bits/alltypes.h> #if defined(_BSD_SOURCE) || defined(_GNU_SOURCE) #define __tm_gmtoff tm_gmtoff #define __tm_zone tm_zone #endif struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; long __tm_gmtoff; const char* __tm_zone; }; clock_t clock(void); time_t time(time_t*); double difftime(time_t, time_t); time_t mktime(struct tm*); size_t strftime(char* __restrict, size_t, const char* __restrict, const struct tm* __restrict); struct tm* gmtime(const time_t*); struct tm* localtime(const time_t*); char* asctime(const struct tm*); char* ctime(const time_t*); int timespec_get(struct timespec*, int); #define CLOCKS_PER_SEC 1000000L #define TIME_UTC 1 #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) || \ defined(_GNU_SOURCE) || defined(_BSD_SOURCE) struct tm* gmtime_r(const time_t* __restrict, struct tm* __restrict); struct tm* localtime_r(const time_t* __restrict, struct tm* __restrict); char* asctime_r(const struct tm* __restrict, char* __restrict); char* ctime_r(const time_t*, char*); void tzset(void); struct itimerspec { struct timespec it_interval; struct timespec it_value; }; #define CLOCK_REALTIME 0 #define CLOCK_MONOTONIC 1 #define CLOCK_PROCESS_CPUTIME_ID 2 #define CLOCK_THREAD_CPUTIME_ID 3 #define CLOCK_MONOTONIC_RAW 4 #define CLOCK_REALTIME_COARSE 5 #define CLOCK_MONOTONIC_COARSE 6 #define CLOCK_BOOTTIME 7 #define CLOCK_REALTIME_ALARM 8 #define CLOCK_BOOTTIME_ALARM 9 #define CLOCK_SGI_CYCLE 10 #define CLOCK_TAI 11 #define TIMER_ABSTIME 1 int nanosleep(const struct timespec*, struct timespec*); int clock_getres(clockid_t, struct timespec*); int clock_gettime(clockid_t, struct timespec*); int clock_settime(clockid_t, const struct timespec*); int clock_nanosleep(clockid_t, int, const struct timespec*, struct timespec*); int clock_getcpuclockid(pid_t, clockid_t*); struct sigevent; int timer_create(clockid_t, struct sigevent* __restrict, timer_t* __restrict); int timer_delete(timer_t); int timer_settime(timer_t, int, const struct itimerspec* __restrict, struct itimerspec* __restrict); int timer_gettime(timer_t, struct itimerspec*); int timer_getoverrun(timer_t); #endif #if defined(_XOPEN_SOURCE) || defined(_BSD_SOURCE) || defined(_GNU_SOURCE) char* strptime(const char* __restrict, const char* __restrict, struct tm* __restrict); extern int daylight; extern long timezone; extern char* tzname[2]; extern int getdate_err; struct tm* getdate(const char*); #endif #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) int stime(const time_t*); time_t timegm(struct tm*); #endif #ifdef __cplusplus } #endif