Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

timekeeping: Simplify timekeeping_clocktai()

timekeeping_clocktai() is not used in fast pathes, so the extra
timespec conversion is not problematic.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: John Stultz <john.stultz@linaro.org>

authored by

Thomas Gleixner and committed by
John Stultz
61edec81 47da70d3

+5 -31
+5
include/linux/timekeeping.h
··· 166 166 *ts = ktime_to_timespec(ktime_get_boottime()); 167 167 } 168 168 169 + static inline void timekeeping_clocktai(struct timespec *ts) 170 + { 171 + *ts = ktime_to_timespec(ktime_get_clocktai()); 172 + } 173 + 169 174 /* 170 175 * RTC specific 171 176 */
-31
kernel/time/timekeeping.c
··· 497 497 } 498 498 EXPORT_SYMBOL_GPL(ktime_get_ts64); 499 499 500 - 501 - /** 502 - * timekeeping_clocktai - Returns the TAI time of day in a timespec 503 - * @ts: pointer to the timespec to be set 504 - * 505 - * Returns the time of day in a timespec. 506 - */ 507 - void timekeeping_clocktai(struct timespec *ts) 508 - { 509 - struct timekeeper *tk = &tk_core.timekeeper; 510 - struct timespec64 ts64; 511 - unsigned long seq; 512 - u64 nsecs; 513 - 514 - WARN_ON(timekeeping_suspended); 515 - 516 - do { 517 - seq = read_seqcount_begin(&tk_core.seq); 518 - 519 - ts64.tv_sec = tk->xtime_sec + tk->tai_offset; 520 - nsecs = timekeeping_get_ns(tk); 521 - 522 - } while (read_seqcount_retry(&tk_core.seq, seq)); 523 - 524 - ts64.tv_nsec = 0; 525 - timespec64_add_ns(&ts64, nsecs); 526 - *ts = timespec64_to_timespec(ts64); 527 - 528 - } 529 - EXPORT_SYMBOL(timekeeping_clocktai); 530 - 531 500 #ifdef CONFIG_NTP_PPS 532 501 533 502 /**