1 /* timespec_get -- get system time - Linux version supporting 64 bit time. 2 Copyright (C) 2020-2021 Free Software Foundation, Inc. 3 This file is part of the GNU C Library. 4 5 The GNU C Library is free software; you can redistribute it and/or 6 modify it under the terms of the GNU Lesser General Public 7 License as published by the Free Software Foundation; either 8 version 2.1 of the License. 9 10 The GNU C Library is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 Lesser General Public License for more details. 14 15 You should have received a copy of the GNU Lesser General Public 16 License along with the GNU C Library; if not, see 17 <https://www.gnu.org/licenses/>. */ 18 19 #include <time.h> 20 #include <errno.h> 21 22 /* Set TS to calendar time based in time base BASE. */ 23 int __timespec_get64(struct __timespec64 * ts,int base)24__timespec_get64 (struct __timespec64 *ts, int base) 25 { 26 if (base == TIME_UTC) 27 { 28 __clock_gettime64 (CLOCK_REALTIME, ts); 29 return base; 30 } 31 return 0; 32 } 33 34 #if __TIMESIZE != 64 libc_hidden_def(__timespec_get64)35libc_hidden_def (__timespec_get64) 36 37 int 38 __timespec_get (struct timespec *ts, int base) 39 { 40 int ret; 41 struct __timespec64 tp64; 42 43 ret = __timespec_get64 (&tp64, base); 44 45 if (ret == TIME_UTC) 46 { 47 if (! in_time_t_range (tp64.tv_sec)) 48 { 49 __set_errno (EOVERFLOW); 50 return 0; 51 } 52 53 *ts = valid_timespec64_to_timespec (tp64); 54 } 55 56 return ret; 57 } 58 #endif 59 strong_alias (__timespec_get, timespec_get); 60