|
|
- /*
- * Public domain
- * sys/time.h compatibility shim
- */
-
- #ifndef LIBCOMPAT_SYS_TIME_H
- #define LIBCOMPAT_SYS_TIME_H
-
- #include_next <sys/time.h>
-
- #include <stdint.h>
-
- int adjfreq(const int64_t *freq, int64_t *oldfreq);
-
- #ifdef __sun
- static inline int sun_adjtime(struct timeval *delta, struct timeval *olddelta)
- {
- struct timeval zero = {0};
- int rc;
-
- /*
- * adjtime on Solaris appears to handle a NULL delta differently than
- * other OSes. Fill in a dummy value as necessary.
- */
- if (delta)
- rc = adjtime(delta, olddelta);
- else
- rc = adjtime(&zero, olddelta);
-
- /*
- * Old delta on Solaris frequently gets stuck with 1 ms left.
- * Round down to 0 in this case so we do not get flapping clock sync.
- */
- if (rc == 0 && olddelta &&
- olddelta->tv_sec == 0 && olddelta->tv_usec == 1)
- olddelta->tv_usec = 0;
-
- return rc;
- }
- #define adjtime(d, o) sun_adjtime(d, o)
- #endif
-
- #endif
|