October 2017
Intermediate to advanced
354 pages
9h 28m
English
Timekeeping helper routines timekeeping_get_ns() and timekeeping_get_ns() help get the correction factor (delta t) between universal time and terrestrial time in nanoseconds:
static inline u64 timekeeping_delta_to_ns(struct tk_read_base *tkr, u64 delta) { u64 nsec; nsec = delta * tkr->mult + tkr->xtime_nsec; nsec >>= tkr->shift; /* If arch requires, add in get_arch_timeoffset() */ return nsec + arch_gettimeoffset(); } static inline u64 timekeeping_get_ns(struct tk_read_base *tkr) { u64 delta; delta = timekeeping_get_delta(tkr); return timekeeping_delta_to_ns(tkr, delta); }
The routine logarithmic_accumulation() updates mono, raw, and xtime timelines; it accumulates shifted intervals of cycles into a shifted interval ...