Messages in this thread | | | From | Huacai Chen <> | Date | Tue, 22 Oct 2019 10:42:55 +0800 | Subject | Re: [PATCH 110/110] lib/vdso: Improve do_hres() and update vdso data unconditionally |
| |
Hi, Thomas,
If we use (s64)cycles < 0, then how to solve the problem that a 64bit counter become negative?
Maybe we can change the "invalid" value from U64_MAX to 0? I think the performance of "cycles == 0" is better than "cycles == U64_MAX".
Huacai
On Mon, Oct 21, 2019 at 10:58 PM Thomas Gleixner <tglx@linutronix.de> wrote: > > On Mon, 21 Oct 2019, Thomas Gleixner wrote: > > > On Mon, 21 Oct 2019, Huacai Chen wrote: > > > @@ -50,7 +50,7 @@ static int do_hres(const struct vdso_data *vd, clockid_t clk, > > > cycles = __arch_get_hw_counter(vd->clock_mode); > > > ns = vdso_ts->nsec; > > > last = vd->cycle_last; > > > - if (unlikely((s64)cycles < 0)) > > > + if (unlikely(cycles == U64_MAX)) > > > return -1; > > > > That used to create worse code than the weird (s64) type cast which has the > > same effect. Did you double check that there is no change? > > It still does for 32bit.
| |