On Wed, 12 Jun 2019, Dmitry Safonov wrote: > > +#ifdef CONFIG_TIME_NS > +notrace static __always_inline void clk_to_ns(clockid_t clk, struct timespec *ts) > +{ > + struct timens_offsets *timens = (struct timens_offsets *) &timens_page; > + struct timespec64 *offset64; > + > + switch (clk) { > + case CLOCK_MONOTONIC: > + case CLOCK_MONOTONIC_COARSE: > + case CLOCK_MONOTONIC_RAW: > + offset64 = &timens->monotonic; > + break; > + case CLOCK_BOOTTIME: > + offset64 = &timens->boottime; > + default: > + return; > + } > + > + ts->tv_nsec += offset64->tv_nsec; > + ts->tv_sec += offset64->tv_sec; > + if (ts->tv_nsec >= NSEC_PER_SEC) { > + ts->tv_nsec -= NSEC_PER_SEC; > + ts->tv_sec++; > + } > + if (ts->tv_nsec < 0) { > + ts->tv_nsec += NSEC_PER_SEC; > + ts->tv_sec--; > + } I had to think twice why adding the offset (which can be negative) can never result in negative time being returned. A comment explaining this would be appreciated. As I'm planning to merge Vincezos VDSO consolidation into 5.3, can you please start to work on top of his series, which should be available as final v7 next week hopefully. Thanks, tglx _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/containers