Messages in this thread | | | Date | Tue, 7 Jul 2009 10:08:56 +0200 (CEST) | From | Thomas Gleixner <> | Subject | Re: [PATCH] optimized ktime_get[_ts] for GENERIC_TIME=y |
| |
Martin,
On Tue, 7 Jul 2009, Martin Schwidefsky wrote: > On Mon, 6 Jul 2009 22:31:39 +0200 (CEST) > Thomas Gleixner <tglx@linutronix.de> wrote: > > > On Mon, 6 Jul 2009, Martin Schwidefsky wrote: > > > +ktime_t ktime_get(void) > > > +{ > > > + cycle_t cycle_now, cycle_delta; > > > + struct timespec time; > > > + unsigned long seq; > > > + s64 nsecs; > > > + > > > + do { > > > + seq = read_seqbegin(&xtime_lock); > > > + time.tv_sec = xtime.tv_sec + wall_to_monotonic.tv_sec; > > > + time.tv_nsec = xtime.tv_nsec + wall_to_monotonic.tv_nsec; > > > > That's actually a violation of the timespec semantics. tv_nsec can end > > up greater than (10^9 - 1). Please use separate sec and nsec variables. > > Well the tv_sec/tv_nsec fields of a timespec are long values. But its > no problem to switch to local variables.
Right. I'm not worried about an overflow of the variable. I was about to suggest using timespec_to_ktime() to fix the !SCALAR problem when I noticed that the timespec is possibly not normalized. Not using a timespec makes the code more obvious I think.
Thanks,
tglx
| |