1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
From 3145a02b4f800e1f27e15e47ca3d2e1372477abf Mon Sep 17 00:00:00 2001
From: Cheyenne Wills <cwills@sinenomine.net>
Date: Fri, 18 Jan 2019 16:53:58 -0700
Subject: [PATCH 4/5] 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 <kaduk@mit.edu>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
(cherry picked from commit b892fb127815bdf72103ae41ee70aadd87931b0c)
Change-Id: I1a0237457e229a11d2a87a3a269cf24adc201e59
Reviewed-on: https://gerrit.openafs.org/13441
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
---
src/afs/LINUX/osi_machdep.h | 12 +++++++++---
src/cf/linux-kernel-func.m4 | 4 ++++
2 files changed, 13 insertions(+), 3 deletions(-)
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 <linux/time.h>],
[struct timespec64 *s;
ktime_get_coarse_real_ts64(s);])
+AC_CHECK_LINUX_FUNC([ktime_get_real_ts64],
+ [#include <linux/ktime.h>],
+ [struct timespec64 *s;
+ ktime_get_real_ts64(s);])
AC_CHECK_LINUX_FUNC([locks_lock_file_wait],
[#include <linux/fs.h>],
[locks_lock_file_wait(NULL, NULL);])
--
2.20.1
|