1 /* Copyright (C) 1999-2021 Free Software Foundation, Inc. 2 This file is part of the GNU C Library. 3 4 The GNU C Library is free software; you can redistribute it and/or 5 modify it under the terms of the GNU Lesser General Public 6 License as published by the Free Software Foundation; either 7 version 2.1 of the License, or (at your option) any later version. 8 9 The GNU C Library is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 Lesser General Public License for more details. 13 14 You should have received a copy of the GNU Lesser General Public 15 License along with the GNU C Library; if not, see 16 <https://www.gnu.org/licenses/>. */ 17 18 #include <time.h> 19 #include <sys/timex.h> 20 21 #ifndef MOD_OFFSET 22 # define modes mode 23 #endif 24 25 /* clock_adjtime64 with CLOCK_REALTIME does not trigger EINVAL, 26 ENODEV, or EOPNOTSUPP. It might still trigger EPERM. */ 27 28 int __ntp_gettimex64(struct __ntptimeval64 * ntv)29__ntp_gettimex64 (struct __ntptimeval64 *ntv) 30 { 31 struct __timex64 tntx; 32 int result; 33 34 tntx.modes = 0; 35 result = __clock_adjtime64 (CLOCK_REALTIME, &tntx); 36 ntv->time = tntx.time; 37 ntv->maxerror = tntx.maxerror; 38 ntv->esterror = tntx.esterror; 39 ntv->tai = tntx.tai; 40 ntv->__glibc_reserved1 = 0; 41 ntv->__glibc_reserved2 = 0; 42 ntv->__glibc_reserved3 = 0; 43 ntv->__glibc_reserved4 = 0; 44 return result; 45 } 46 47 #if __TIMESIZE != 64 libc_hidden_def(__ntp_gettimex64)48libc_hidden_def (__ntp_gettimex64) 49 50 int 51 __ntp_gettimex (struct ntptimeval *ntv) 52 { 53 struct __ntptimeval64 ntv64; 54 int result; 55 56 result = __ntp_gettimex64 (&ntv64); 57 *ntv = valid_ntptimeval64_to_ntptimeval (ntv64); 58 59 return result; 60 } 61 #endif 62 strong_alias (__ntp_gettimex, ntp_gettimex) 63