summarylogtreecommitdiffstats
path: root/0004-Linux_5.0-replace-do_gettimeofday-with-ktime_get_rea.patch
blob: b51b351d0f582818e6172e56700f6f512dcebb7e (plain)
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