# define __clock_adjtime64 __clock_adjtime
# define ___adjtimex64 ___adjtimex
# define __ntptimeval64 ntptimeval
+# define __ntp_gettime64 __ntp_gettime
# else
struct __timex64
long int __glibc_reserved3;
long int __glibc_reserved4;
};
+extern int __ntp_gettime64 (struct __ntptimeval64 *ntv);
+libc_hidden_proto (__ntp_gettime64)
+
# endif
/* Convert a known valid struct timex into a struct __timex64. */
#define ntp_gettime ntp_gettime_redirect
+#include <time.h>
#include <sys/timex.h>
#undef ntp_gettime
# define modes mode
#endif
+/* clock_adjtime64 with CLOCK_REALTIME does not trigger EINVAL,
+ ENODEV, or EOPNOTSUPP. It might still trigger EPERM. */
int
-ntp_gettime (struct ntptimeval *ntv)
+__ntp_gettime64 (struct __ntptimeval64 *ntv)
{
- struct timex tntx;
+ struct __timex64 tntx;
int result;
tntx.modes = 0;
- result = __adjtimex (&tntx);
+ result = __clock_adjtime64 (CLOCK_REALTIME, &tntx);
ntv->time = tntx.time;
ntv->maxerror = tntx.maxerror;
ntv->esterror = tntx.esterror;
return result;
}
+
+#if __TIMESIZE != 64
+libc_hidden_def (__ntp_gettime64)
+
+int
+__ntp_gettime (struct ntptimeval *ntv)
+{
+ struct __ntptimeval64 ntv64;
+ int result;
+
+ result = __ntp_gettime64 (&ntv64);
+ *ntv = valid_ntptimeval64_to_ntptimeval (ntv64);
+
+ return result;
+}
+#endif
+strong_alias (__ntp_gettime, ntp_gettime)