]>
Commit | Line | Data |
---|---|---|
ab2dc296 GKH |
1 | From 07e5f5e353aaa61696c8353d87050994a0c4648a Mon Sep 17 00:00:00 2001 |
2 | From: Frederic Weisbecker <fweisbec@gmail.com> | |
3 | Date: Tue, 31 Jan 2017 04:09:17 +0100 | |
4 | Subject: time: Introduce jiffies64_to_nsecs() | |
5 | ||
6 | From: Frederic Weisbecker <fweisbec@gmail.com> | |
7 | ||
8 | commit 07e5f5e353aaa61696c8353d87050994a0c4648a upstream. | |
9 | ||
10 | This will be needed for the cputime_t to nsec conversion. | |
11 | ||
12 | Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com> | |
13 | Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> | |
14 | Cc: Paul Mackerras <paulus@samba.org> | |
15 | Cc: Michael Ellerman <mpe@ellerman.id.au> | |
16 | Cc: Heiko Carstens <heiko.carstens@de.ibm.com> | |
17 | Cc: Martin Schwidefsky <schwidefsky@de.ibm.com> | |
18 | Cc: Tony Luck <tony.luck@intel.com> | |
19 | Cc: Fenghua Yu <fenghua.yu@intel.com> | |
20 | Cc: Peter Zijlstra <peterz@infradead.org> | |
21 | Cc: Rik van Riel <riel@redhat.com> | |
22 | Cc: Stanislaw Gruszka <sgruszka@redhat.com> | |
23 | Cc: Wanpeng Li <wanpeng.li@hotmail.com> | |
24 | Link: http://lkml.kernel.org/r/1485832191-26889-2-git-send-email-fweisbec@gmail.com | |
25 | Signed-off-by: Ingo Molnar <mingo@kernel.org> | |
26 | Signed-off-by: Ivan Delalande <colona@arista.com> | |
27 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | |
28 | ||
29 | --- | |
30 | include/linux/jiffies.h | 2 ++ | |
31 | kernel/time/time.c | 10 ++++++++++ | |
32 | kernel/time/timeconst.bc | 6 ++++++ | |
33 | 3 files changed, 18 insertions(+) | |
34 | ||
35 | --- a/include/linux/jiffies.h | |
36 | +++ b/include/linux/jiffies.h | |
37 | @@ -292,6 +292,8 @@ static inline u64 jiffies_to_nsecs(const | |
38 | return (u64)jiffies_to_usecs(j) * NSEC_PER_USEC; | |
39 | } | |
40 | ||
41 | +extern u64 jiffies64_to_nsecs(u64 j); | |
42 | + | |
43 | extern unsigned long __msecs_to_jiffies(const unsigned int m); | |
44 | #if HZ <= MSEC_PER_SEC && !(MSEC_PER_SEC % HZ) | |
45 | /* | |
46 | --- a/kernel/time/time.c | |
47 | +++ b/kernel/time/time.c | |
48 | @@ -704,6 +704,16 @@ u64 nsec_to_clock_t(u64 x) | |
49 | #endif | |
50 | } | |
51 | ||
52 | +u64 jiffies64_to_nsecs(u64 j) | |
53 | +{ | |
54 | +#if !(NSEC_PER_SEC % HZ) | |
55 | + return (NSEC_PER_SEC / HZ) * j; | |
56 | +# else | |
57 | + return div_u64(j * HZ_TO_NSEC_NUM, HZ_TO_NSEC_DEN); | |
58 | +#endif | |
59 | +} | |
60 | +EXPORT_SYMBOL(jiffies64_to_nsecs); | |
61 | + | |
62 | /** | |
63 | * nsecs_to_jiffies64 - Convert nsecs in u64 to jiffies64 | |
64 | * | |
65 | --- a/kernel/time/timeconst.bc | |
66 | +++ b/kernel/time/timeconst.bc | |
67 | @@ -98,6 +98,12 @@ define timeconst(hz) { | |
68 | print "#define HZ_TO_USEC_DEN\t\t", hz/cd, "\n" | |
69 | print "#define USEC_TO_HZ_NUM\t\t", hz/cd, "\n" | |
70 | print "#define USEC_TO_HZ_DEN\t\t", 1000000/cd, "\n" | |
71 | + | |
72 | + cd=gcd(hz,1000000000) | |
73 | + print "#define HZ_TO_NSEC_NUM\t\t", 1000000000/cd, "\n" | |
74 | + print "#define HZ_TO_NSEC_DEN\t\t", hz/cd, "\n" | |
75 | + print "#define NSEC_TO_HZ_NUM\t\t", hz/cd, "\n" | |
76 | + print "#define NSEC_TO_HZ_DEN\t\t", 1000000000/cd, "\n" | |
77 | print "\n" | |
78 | ||
79 | print "#endif /* KERNEL_TIMECONST_H */\n" |