diff options
author | Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> | 2008-06-12 04:48:00 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-06-12 04:48:00 -0400 |
commit | 9412e28649d0272df5e4af57bb378926fd4df580 (patch) | |
tree | 3916d1b431723bc9231b41161d7a53aece02a3c3 /include | |
parent | d5e181f78ac753893eb930868a52a4488cd3de0a (diff) |
always_inline timespec_add_ns
timespec_add_ns is used from the x86-64 vdso, which cannot call out to
other kernel code. Make sure that timespec_add_ns is always inlined
(and only uses always_inlined functions) to make sure there are no
unexpected calls.
Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/time.h | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/include/linux/time.h b/include/linux/time.h index 05f9517a8ed1..e15206a7e82e 100644 --- a/include/linux/time.h +++ b/include/linux/time.h | |||
@@ -170,10 +170,13 @@ extern struct timeval ns_to_timeval(const s64 nsec); | |||
170 | * timespec_add_ns - Adds nanoseconds to a timespec | 170 | * timespec_add_ns - Adds nanoseconds to a timespec |
171 | * @a: pointer to timespec to be incremented | 171 | * @a: pointer to timespec to be incremented |
172 | * @ns: unsigned nanoseconds value to be added | 172 | * @ns: unsigned nanoseconds value to be added |
173 | * | ||
174 | * This must always be inlined because its used from the x86-64 vdso, | ||
175 | * which cannot call other kernel functions. | ||
173 | */ | 176 | */ |
174 | static inline void timespec_add_ns(struct timespec *a, u64 ns) | 177 | static __always_inline void timespec_add_ns(struct timespec *a, u64 ns) |
175 | { | 178 | { |
176 | a->tv_sec += iter_div_u64_rem(a->tv_nsec + ns, NSEC_PER_SEC, &ns); | 179 | a->tv_sec += __iter_div_u64_rem(a->tv_nsec + ns, NSEC_PER_SEC, &ns); |
177 | a->tv_nsec = ns; | 180 | a->tv_nsec = ns; |
178 | } | 181 | } |
179 | #endif /* __KERNEL__ */ | 182 | #endif /* __KERNEL__ */ |