提交 9412e286 编写于 作者: J Jeremy Fitzhardinge 提交者: Ingo Molnar

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: NJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Signed-off-by: NIngo Molnar <mingo@elte.hu>
上级 d5e181f7
...@@ -170,10 +170,13 @@ extern struct timeval ns_to_timeval(const s64 nsec); ...@@ -170,10 +170,13 @@ extern struct timeval ns_to_timeval(const s64 nsec);
* timespec_add_ns - Adds nanoseconds to a timespec * timespec_add_ns - Adds nanoseconds to a timespec
* @a: pointer to timespec to be incremented * @a: pointer to timespec to be incremented
* @ns: unsigned nanoseconds value to be added * @ns: unsigned nanoseconds value to be added
*
* This must always be inlined because its used from the x86-64 vdso,
* which cannot call other kernel functions.
*/ */
static inline void timespec_add_ns(struct timespec *a, u64 ns) static __always_inline void timespec_add_ns(struct timespec *a, u64 ns)
{ {
a->tv_sec += iter_div_u64_rem(a->tv_nsec + ns, NSEC_PER_SEC, &ns); a->tv_sec += __iter_div_u64_rem(a->tv_nsec + ns, NSEC_PER_SEC, &ns);
a->tv_nsec = ns; a->tv_nsec = ns;
} }
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册