11fc1e710Schristos /* 21fc1e710Schristos * Public domain 31fc1e710Schristos * sys/time.h compatibility shim 41fc1e710Schristos */ 51fc1e710Schristos 61fc1e710Schristos #if defined(_MSC_VER) && (_MSC_VER >= 1900) 71fc1e710Schristos #include <../ucrt/time.h> 81fc1e710Schristos #elif defined(_MSC_VER) && (_MSC_VER < 1900) 91fc1e710Schristos #include <../include/time.h> 101fc1e710Schristos #else 111fc1e710Schristos #include <time.h> 121fc1e710Schristos #endif 131fc1e710Schristos 141fc1e710Schristos #ifndef _COMPAT_TIME_H 151fc1e710Schristos #define _COMPAT_TIME_H 161fc1e710Schristos 171fc1e710Schristos #ifndef CLOCK_MONOTONIC 181fc1e710Schristos #define CLOCK_MONOTONIC CLOCK_REALTIME 191fc1e710Schristos #endif 201fc1e710Schristos 211fc1e710Schristos #ifndef CLOCK_REALTIME 221fc1e710Schristos #define CLOCK_REALTIME 0 231fc1e710Schristos #endif 241fc1e710Schristos 251fc1e710Schristos #ifndef HAVE_CLOCK_GETTIME 261fc1e710Schristos typedef int clockid_t; 271fc1e710Schristos int clock_gettime(clockid_t, struct timespec *); 281fc1e710Schristos #endif 291fc1e710Schristos 301fc1e710Schristos #ifdef HAVE_TIMESPECSUB 311fc1e710Schristos #include <sys/time.h> 321fc1e710Schristos #endif 331fc1e710Schristos 341fc1e710Schristos #ifndef HAVE_TIMESPECSUB 35*95dbdf32Schristos #define timespecadd(tsp, usp, vsp) \ 36*95dbdf32Schristos do { \ 37*95dbdf32Schristos (vsp)->tv_sec = (tsp)->tv_sec + (usp)->tv_sec; \ 38*95dbdf32Schristos (vsp)->tv_nsec = (tsp)->tv_nsec + (usp)->tv_nsec; \ 39*95dbdf32Schristos if ((vsp)->tv_nsec >= 1000000000L) { \ 40*95dbdf32Schristos (vsp)->tv_sec++; \ 41*95dbdf32Schristos (vsp)->tv_nsec -= 1000000000L; \ 42*95dbdf32Schristos } \ 43*95dbdf32Schristos } while (0) 44*95dbdf32Schristos 451fc1e710Schristos #define timespecsub(tsp, usp, vsp) \ 461fc1e710Schristos do { \ 471fc1e710Schristos (vsp)->tv_sec = (tsp)->tv_sec - (usp)->tv_sec; \ 481fc1e710Schristos (vsp)->tv_nsec = (tsp)->tv_nsec - (usp)->tv_nsec; \ 491fc1e710Schristos if ((vsp)->tv_nsec < 0) { \ 501fc1e710Schristos (vsp)->tv_sec--; \ 511fc1e710Schristos (vsp)->tv_nsec += 1000000000L; \ 521fc1e710Schristos } \ 531fc1e710Schristos } while (0) 54*95dbdf32Schristos 55*95dbdf32Schristos #define timespeccmp(tsp, usp, cmp) \ 56*95dbdf32Schristos (((tsp)->tv_sec == (usp)->tv_sec) ? \ 57*95dbdf32Schristos ((tsp)->tv_nsec cmp (usp)->tv_nsec) : \ 58*95dbdf32Schristos ((tsp)->tv_sec cmp (usp)->tv_sec)) 591fc1e710Schristos #endif 601fc1e710Schristos 611fc1e710Schristos #endif /* _COMPAT_TIME_H */ 62