From mboxrd@z Thu Jan 1 00:00:00 1970 From: compudj@krystal.dyndns.org (Mathieu Desnoyers) Date: Mon, 2 Aug 2010 15:55:29 -0400 Subject: [ltt-dev] [PATCH] We now rely on the lib userspace rcu API for the trace_clock_read64 function that will now use get_cycles which is architecture _aware_ In-Reply-To: <1279816801-20502-1-git-send-email-david.goulet@polymtl.ca> References: <1279816801-20502-1-git-send-email-david.goulet@polymtl.ca> Message-ID: <20100802195529.GD3910@Krystal> * David Goulet (david.goulet at polymtl.ca) wrote: > --- > include/ust/clock.h | 72 +++++---------------------------------------------- > 1 files changed, 7 insertions(+), 65 deletions(-) > > diff --git a/include/ust/clock.h b/include/ust/clock.h > index cb8a663..27279b6 100644 > --- a/include/ust/clock.h > +++ b/include/ust/clock.h > @@ -18,8 +18,6 @@ > #ifndef UST_CLOCK_H > #define UST_CLOCK_H > > -#include > -#include > #include > > /* TRACE CLOCK */ > @@ -35,77 +33,21 @@ > For merging traces with the kernel, a time source compatible with that of > the kernel is necessary. > > - Instead of gettimeofday(), we are now using clock_gettime for better > - precision and monotonicity. > - > + We now use the lib userspace RCU API for clock read. Hrm, have you checked if get_cycles() is still in the userspace RCU library git master ? I think we removed it from the standard API. Mathieu > */ > > -#define TRACE_CLOCK_GENERIC > -#ifdef TRACE_CLOCK_GENERIC > - > -static __inline__ u64 trace_clock_read64(void) > -{ > - struct timespec ts; > - u64 retval; > - > - clock_gettime(CLOCK_MONOTONIC, &ts); > - retval = ts.tv_sec; > - retval *= 1000000000; > - retval += ts.tv_nsec; > - > - return retval; > -} > - > -#else > - > -#if __i386 || __x86_64 > - > -/* WARNING: Make sure to set frequency and scaling functions that will not > - * result in lttv timestamps (sec.nsec) with seconds greater than 2**32-1. > +/* > + * Generic trace_clock_read64 function > */ > static __inline__ u64 trace_clock_read64(void) > { > - uint32_t low; > - uint32_t high; > - uint64_t retval; > - __asm__ volatile ("rdtsc\n" : "=a" (low), "=d" (high)); > + cycles_t retval; > > - retval = high; > - retval <<= 32; > - return retval | low; > + /* Lib urcu API for cycles count */ > + retval = get_cycles(); > + return (u64)retval; > } > > -#endif /* __i386 || __x86_64 */ > - > -#ifdef __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; > -} > - > -#endif /* __PPC__ */ > - > -#endif /* ! UST_TRACE_CLOCK_GENERIC */ > - > static __inline__ u64 trace_clock_frequency(void) > { > return 1000000000LL; > -- > 1.7.0.4 > > > _______________________________________________ > 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