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

Configure Feed

Select the types of activity you want to include in your feed.

timekeeping: Consolidate fast timekeeper

Provide a inline function which replaces the copy & pasta.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lore.kernel.org/r/20220415091921.072296632@linutronix.de

+10 -10
+10 -10
kernel/time/timekeeping.c
··· 429 429 memcpy(base + 1, base, sizeof(*base)); 430 430 } 431 431 432 + static __always_inline u64 fast_tk_get_delta_ns(struct tk_read_base *tkr) 433 + { 434 + u64 delta, cycles = tk_clock_read(tkr); 435 + 436 + delta = clocksource_delta(cycles, tkr->cycle_last, tkr->mask); 437 + return timekeeping_delta_to_ns(tkr, delta); 438 + } 439 + 432 440 static __always_inline u64 __ktime_get_fast_ns(struct tk_fast *tkf) 433 441 { 434 442 struct tk_read_base *tkr; ··· 447 439 seq = raw_read_seqcount_latch(&tkf->seq); 448 440 tkr = tkf->base + (seq & 0x01); 449 441 now = ktime_to_ns(tkr->base); 450 - 451 - now += timekeeping_delta_to_ns(tkr, 452 - clocksource_delta( 453 - tk_clock_read(tkr), 454 - tkr->cycle_last, 455 - tkr->mask)); 442 + now += fast_tk_get_delta_ns(tkr); 456 443 } while (read_seqcount_latch_retry(&tkf->seq, seq)); 457 444 458 445 return now; ··· 563 560 tkr = tkf->base + (seq & 0x01); 564 561 basem = ktime_to_ns(tkr->base); 565 562 baser = ktime_to_ns(tkr->base_real); 566 - 567 - delta = timekeeping_delta_to_ns(tkr, 568 - clocksource_delta(tk_clock_read(tkr), 569 - tkr->cycle_last, tkr->mask)); 563 + delta = fast_tk_get_delta_ns(tkr); 570 564 } while (read_seqcount_latch_retry(&tkf->seq, seq)); 571 565 572 566 if (mono)