[ltt-dev] [PATCH] Remove PowerPC specific time reading function
Mathieu Desnoyers
compudj at krystal.dyndns.org
Thu Feb 10 12:54:12 EST 2011
* Mathieu Desnoyers (compudj at krystal.dyndns.org) wrote:
> * Yannick Brosseau (yannick.brosseau at gmail.com) wrote:
> > The PPC version of the trace_clock_read64 was using the TB register
> > which is not constant accross implementations. The currently
> > measured time base on PPC was not accurate.
> > So, for now, we rely on the CLOCK_MONOTONIC.
> >
> > This patch remove a bunch of #ifdef for x86 and PPC, since we now rely on
> > the same base clock. It also fix the build on PPC that was currently broken
>
> Merged, thanks !
>
> We should do a 0.12 bugfix release soon. This is a major showstopper on
> ppc.
We should hold the 0.12 release until I finish fixing lots of format
string bugs I found in the source.
Mathieu
>
> Mathieu
>
> >
> > Signed-off-by: Yannick Brosseau <yannick.brosseau at gmail.com>
> > ---
> > include/ust/clock.h | 30 ++----------------------------
> > 1 files changed, 2 insertions(+), 28 deletions(-)
> >
> > diff --git a/include/ust/clock.h b/include/ust/clock.h
> > index 04785fc..5e558f8 100644
> > --- a/include/ust/clock.h
> > +++ b/include/ust/clock.h
> > @@ -39,7 +39,6 @@
> > precision and monotonicity.
> > */
> >
> > -#if __i386__ || __x86_64__
> > /* Only available for x86 arch */
> > #define CLOCK_TRACE_FREQ 14
> > #define CLOCK_TRACE 15
> > @@ -47,36 +46,10 @@ union lttng_timespec {
> > struct timespec ts;
> > u64 lttng_ts;
> > };
> > -#endif /* __i386__ || __x86_64__ */
> >
> > extern int ust_clock_source;
> >
> > /* Choosing correct trace clock */
> > -#if __PPC__
> > -static __inline__ u64 trace_clock_read64(void)
> > -{
> > - unsigned long tb_l;
> > - unsigned long tb_h;
> > - unsigned long tb_h2;
> > - u64 tb;
> > -
> > - __asm__ (
> > - "1:\n\t"
> > - "mftbu %[rhigh]\n\t"
> > - "mftb %[rlow]\n\t"
> > - "mftbu %[rhigh2]\n\t"
> > - "cmpw %[rhigh],%[rhigh2]\n\t"
> > - "bne 1b\n\t"
> > - : [rhigh] "=r" (tb_h), [rhigh2] "=r" (tb_h2), [rlow] "=r" (tb_l));
> > -
> > - tb = tb_h;
> > - tb <<= 32;
> > - tb |= tb_l;
> > -
> > - return tb;
> > -}
> > -
> > -#else /* !__PPC__ */
> >
> > static __inline__ u64 trace_clock_read64(void)
> > {
> > @@ -101,17 +74,18 @@ static __inline__ u64 trace_clock_read64(void)
> > return retval;
> > }
> >
> > -#endif /* __PPC__ */
> >
> > static __inline__ u64 trace_clock_frequency(void)
> > {
> > struct timespec ts;
> > union lttng_timespec *lts = (union lttng_timespec *) &ts;
> >
> > +#if __i386__ || __x86_64__
> > if (likely(ust_clock_source == CLOCK_TRACE)) {
> > clock_gettime(CLOCK_TRACE_FREQ, &ts);
> > return lts->lttng_ts;
> > }
> > +#endif
> > return 1000000000LL;
> > }
> >
> > --
> > 1.7.2.3
> >
> >
> > _______________________________________________
> > ltt-dev mailing list
> > ltt-dev at lists.casi.polymtl.ca
> > http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev
> >
>
> --
> Mathieu Desnoyers
> Operating System Efficiency R&D Consultant
> EfficiOS Inc.
> http://www.efficios.com
--
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com
More information about the lttng-dev
mailing list