From: Cheyenne Wills Date: Fri, 18 Jan 2019 23:53:58 +0000 (-0700) Subject: Linux_5.0: replace do_gettimeofday with ktime_get_real_ts64 X-Git-Tag: upstream/1.8.3^2~8 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=e7d8dc01cc1f0592eaecea5b87990097e9e59b88;p=packages%2Fo%2Fopenafs.git Linux_5.0: replace do_gettimeofday with ktime_get_real_ts64 In Kernel commit e4b92b108c6cd6b311e4b6e85d6a87a34599a6e3 the do_gettimeofday function was removed. According to the Linux Documentation/core-api/timekeeping.rst ktime_get_real_ts64 is the direct replacement for do_gettimeofday Updated the macro osi_GetTime to use ktime_get_real_ts64 if it is available. Reviewed-on: https://gerrit.openafs.org/13433 Reviewed-by: Benjamin Kaduk Tested-by: BuildBot (cherry picked from commit b892fb127815bdf72103ae41ee70aadd87931b0c) Change-Id: I1a0237457e229a11d2a87a3a269cf24adc201e59 Reviewed-on: https://gerrit.openafs.org/13441 Reviewed-by: Michael Meffie Tested-by: BuildBot Reviewed-by: Mark Vitale Reviewed-by: Stephan Wiesand --- diff --git a/src/afs/LINUX/osi_machdep.h b/src/afs/LINUX/osi_machdep.h index a1a2f57c0..6832c3ee0 100644 --- a/src/afs/LINUX/osi_machdep.h +++ b/src/afs/LINUX/osi_machdep.h @@ -92,9 +92,15 @@ static inline time_t osi_Time(void) { # define osi_Time() (xtime.tv_sec) #endif - - -#ifdef AFS_LINUX_64BIT_KERNEL +#if defined(HAVE_LINUX_KTIME_GET_REAL_TS64) +# define osi_GetTime(V) \ + do { \ + struct timespec64 __afs_tv; \ + ktime_get_real_ts64(&__afs_tv); \ + (V)->tv_sec = (afs_int32)__afs_tv.tv_sec; \ + (V)->tv_usec = (afs_int32)__afs_tv.tv_nsec / 1000; \ + } while(0) +#elif defined(AFS_LINUX_64BIT_KERNEL) # define osi_GetTime(V) \ do { \ struct timeval __afs_tv; \ diff --git a/src/cf/linux-kernel-func.m4 b/src/cf/linux-kernel-func.m4 index 62fd528d6..40fcb1668 100644 --- a/src/cf/linux-kernel-func.m4 +++ b/src/cf/linux-kernel-func.m4 @@ -76,6 +76,10 @@ AC_CHECK_LINUX_FUNC([ktime_get_coarse_real_ts64], [#include ], [struct timespec64 *s; ktime_get_coarse_real_ts64(s);]) +AC_CHECK_LINUX_FUNC([ktime_get_real_ts64], + [#include ], + [struct timespec64 *s; + ktime_get_real_ts64(s);]) AC_CHECK_LINUX_FUNC([locks_lock_file_wait], [#include ], [locks_lock_file_wait(NULL, NULL);])