2 * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
4 * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
13 #define MAX_SEC (LONG_MAX / 1000000L - 2)
14 #define MIN_SEC (LONG_MIN / 1000000L + 2)
21 adjtime(const struct timeval * itv, struct timeval * otv)
29 /* We will do some check here. */
30 tmp.tv_sec = itv->tv_sec + itv->tv_usec / 1000000L;
31 tmp.tv_usec = itv->tv_usec % 1000000L;
32 if (tmp.tv_sec > MAX_SEC || tmp.tv_sec < MIN_SEC)
37 tntx.offset = tmp.tv_usec + tmp.tv_sec * 1000000L;
38 tntx.modes = ADJ_OFFSET_SINGLESHOT;
44 if (adjtimex(&tntx) < 0) return -1;
48 otv->tv_usec = -(-tntx.offset % 1000000);
49 otv->tv_sec = -(-tntx.offset / 1000000);
53 otv->tv_usec = tntx.offset % 1000000;
54 otv->tv_sec = tntx.offset / 1000000;