diff --git a/configure.in b/configure.in index f8a6b06..23a1e08 100644 --- a/configure.in +++ b/configure.in @@ -59,6 +59,7 @@ AC_CHECK_FUNC(gethostbyname,,[AC_CHECK_LIB(nsl,gethostbyname)]) AC_CHECK_FUNC(connect,,[AC_CHECK_LIB(socket,connect)]) AC_CHECK_FUNC(inet_aton,,[AC_CHECK_LIB(resolv,inet_aton)]) AC_CHECK_LIB(kstat, kstat_open) +AC_CHECK_LIB(posix4, nanosleep) AC_CHECK_FUNCS(getloadavg swapctl) AC_CHECK_HEADERS(procfs.h sys/procfs.h sys/loadavg.h utmpx.h) diff --git a/server/drivers/timing.h b/server/drivers/timing.h index 3222b71..ecdbe30 100644 --- a/server/drivers/timing.h +++ b/server/drivers/timing.h @@ -76,6 +76,44 @@ # include #endif +/* Convenience macros for operations on timevals. + NOTE: `timercmp' does not work for >= or <=. */ +#ifndef timerisset +# define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec) +#endif +#ifndef timerclear +# define timerclear(tvp) ((tvp)->tv_sec = (tvp)->tv_usec = 0) +#endif +#ifndef timercmp +# define timercmp(a, b, CMP) \ + (((a)->tv_sec == (b)->tv_sec) ? \ + ((a)->tv_usec CMP (b)->tv_usec) : \ + ((a)->tv_sec CMP (b)->tv_sec)) +#endif +#ifndef timeradd +# define timeradd(a, b, result) \ + do { \ + (result)->tv_sec = (a)->tv_sec + (b)->tv_sec; \ + (result)->tv_usec = (a)->tv_usec + (b)->tv_usec; \ + if ((result)->tv_usec >= 1000000) \ + { \ + ++(result)->tv_sec; \ + (result)->tv_usec -= 1000000; \ + } \ + } while (0) +#endif +#ifndef timersub +# define timersub(a, b, result) \ + do { \ + (result)->tv_sec = (a)->tv_sec - (b)->tv_sec; \ + (result)->tv_usec = (a)->tv_usec - (b)->tv_usec; \ + if ((result)->tv_usec < 0) { \ + --(result)->tv_sec; \ + (result)->tv_usec += 1000000; \ + } \ + } while (0) +#endif + ///////////////////////////////////////////////////////////////// // Initialisation //