aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/time.h
diff options
context:
space:
mode:
authorJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>2008-06-12 04:48:00 -0400
committerIngo Molnar <mingo@elte.hu>2008-06-12 04:48:00 -0400
commit9412e28649d0272df5e4af57bb378926fd4df580 (patch)
tree3916d1b431723bc9231b41161d7a53aece02a3c3 /include/linux/time.h
parentd5e181f78ac753893eb930868a52a4488cd3de0a (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/linux/time.h')
-rw-r--r--include/linux/time.h7
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 */
174static inline void timespec_add_ns(struct timespec *a, u64 ns) 177static __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__ */