On Thu, 2008-07-24 at 08:11 -0700, Darren Hart wrote:
> On Wed, 2008-07-23 at 15:23 +0200, Gilles Carry wrote:
> > From: gilles.carry <gilles.carry>
> > 
> > The same TSC read (rdtscll) macros and tsc_minus where implemented in three
> > different tests.
> > This patch put all this into librttest.*
> > 
> > Signed-off-by: Gilles Carry <[EMAIL PROTECTED]>
> > Cc: Tim Chavez <[EMAIL PROTECTED]>
> 
> Acked-by: Darren Hart <[EMAIL PROTECTED]>

Committed.

Regards--
Subrata

> 
> > 
> > ---
> >  .../func/async_handler/async_handler_tsc.c         |   33 
> > -------------------
> >  .../realtime/func/measurement/preempt_timing.c     |   20 -----------
> >  .../realtime/func/measurement/rdtsc-latency.c      |   34 
> > --------------------
> >  testcases/realtime/include/librttest.h             |   26 +++++++++++++++
> >  testcases/realtime/lib/librttest.c                 |   13 +++++++
> >  5 files changed, 39 insertions(+), 87 deletions(-)
> > 
> > diff --git a/testcases/realtime/func/async_handler/async_handler_tsc.c 
> > b/testcases/realtime/func/async_handler/async_handler_tsc.c
> > index 07ecf3d..d93e9a7 100644
> > --- a/testcases/realtime/func/async_handler/async_handler_tsc.c
> > +++ b/testcases/realtime/func/async_handler/async_handler_tsc.c
> > @@ -70,27 +70,6 @@ atomic_t step;
> >  pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
> >  pthread_mutex_t mutex;
> > 
> > -#define ULL_MAX 18446744073709551615ULL // (1 << 64) - 1
> > -#if defined(__i386__)
> > -#define rdtscll(val) __asm__ __volatile__("rdtsc" : "=A" (val))
> > -#elif defined(__x86_64__)
> > -#define rdtscll(val)                                       \
> > -   do {                                            \
> > -           uint32_t low, high;                     \
> > -           __asm__ __volatile__ ("rdtsc" : "=a" (low), "=d" (high)); \
> > -           val = (uint64_t)high << 32 | low;       \
> > -   } while(0)
> > -#elif defined(__powerpc__) /* 32bit version */
> > -#define rdtscll(val)                                                       
> > \
> > -    do {                                                           \
> > -           uint32_t tbhi, tblo ;                                   \
> > -           __asm__ __volatile__ ("mftbu %0" : "=r" (tbhi));        \
> > -           __asm__ __volatile__ ("mftbl %0" : "=r" (tblo));        \
> > -           val = 1000 * ((uint64_t) tbhi << 32) | tblo;            \
> > -   } while(0)
> > -#else
> > -#error
> > -#endif
> > 
> >  static int run_jvmsim=0;
> > 
> > @@ -119,18 +98,6 @@ int parse_args(int c, char *v)
> >          return handled;
> >  }
> > 
> > -/* return difference in microseconds */
> > -unsigned long long tsc_minus(unsigned long long tsc_start, unsigned long 
> > long tsc_end)
> > -{
> > -   unsigned long long delta;
> > -   if (tsc_start < tsc_end)
> > -           delta = tsc_end - tsc_start;
> > -   else {
> > -           delta = ULL_MAX - (tsc_end - tsc_start) + 1;
> > -           printf("TSC wrapped, delta=%llu\n", delta);
> > -   }
> > -   return delta;
> > -}
> > 
> >  /* calculate the tsc period */
> >  unsigned long long tsc_period_ps(void)
> > diff --git a/testcases/realtime/func/measurement/preempt_timing.c 
> > b/testcases/realtime/func/measurement/preempt_timing.c
> > index 989b97b..b0e24d4 100644
> > --- a/testcases/realtime/func/measurement/preempt_timing.c
> > +++ b/testcases/realtime/func/measurement/preempt_timing.c
> > @@ -55,26 +55,6 @@
> >  #include <librttest.h>
> >  #include <libjvmsim.h>
> > 
> > -#if defined(__i386__)
> > -#define rdtscll(val)       __asm__ __volatile__("rdtsc" : "=A" (val))
> > -#elif defined(__x86_64__)
> > -#define rdtscll(val)                                       \
> > -   do {                                            \
> > -           uint32_t low, high;                     \
> > -            __asm__ __volatile__ ("rdtsc" : "=a" (low), "=d" (high)); \
> > -           val = (uint64_t)high << 32 | low;       \
> > -   } while(0)
> > -#elif defined(__powerpc__) /* 32bit version */
> > -#define rdtscll(val)                                                       
> > \
> > -    do {                                                           \
> > -           uint32_t tbhi, tblo ;                                   \
> > -           __asm__ __volatile__ ("mftbu %0" : "=r" (tbhi));        \
> > -           __asm__ __volatile__ ("mftbl %0" : "=r" (tblo));        \
> > -           val = 1000 * ((uint64_t) tbhi <<32) | tblo;             \
> > -   } while(0)
> > -#else
> > -#error
> > -#endif
> > 
> >  #define ITERATIONS 1000000ULL
> >  #define INTERVALS 10
> > diff --git a/testcases/realtime/func/measurement/rdtsc-latency.c 
> > b/testcases/realtime/func/measurement/rdtsc-latency.c
> > index 38883c4..1d266fb 100644
> > --- a/testcases/realtime/func/measurement/rdtsc-latency.c
> > +++ b/testcases/realtime/func/measurement/rdtsc-latency.c
> > @@ -46,28 +46,6 @@
> >  #include <librttest.h>
> > 
> >  #define ITERATIONS 1000000
> > -#define ULL_MAX 18446744073709551615ULL // (1 << 64) - 1
> > -
> > -#if defined(__i386__)
> > -#define rdtscll(val)    __asm__ __volatile__("rdtsc" : "=A" (val))
> > -#elif defined(__x86_64__)
> > -#define rdtscll(val)                                       \
> > -   do {                                            \
> > -           uint32_t low, high;                     \
> > -           __asm__ __volatile__ ("rdtsc" : "=a" (low), "=d" (high)); \
> > -           val = (uint64_t)high << 32 | low;       \
> > -   } while(0)
> > -#elif defined(__powerpc__) /* 32 bit version */
> > -#define rdtscll(val)                                                       
> > \
> > -    do {                                                           \
> > -           uint32_t tbhi, tblo ;                                   \
> > -           __asm__ __volatile__ ("mftbu %0" : "=r" (tbhi));        \
> > -           __asm__ __volatile__ ("mftbl %0" : "=r" (tblo));        \
> > -           val = 1000 * ((uint64_t) tbhi <<32) | tblo;             \
> > -   } while(0)
> > -#else
> > -#error
> > -#endif
> > 
> >  void usage(void)
> >  {
> > @@ -100,18 +78,6 @@ unsigned long long tv_minus(struct timeval *tv_start, 
> > struct timeval *tv_end)
> >     return nsecs;
> >  }
> > 
> > -/* return difference in microseconds */
> > -unsigned long long tsc_minus(unsigned long long tsc_start, unsigned long 
> > long tsc_end)
> > -{
> > -   unsigned long long delta;
> > -   if (tsc_start < tsc_end)
> > -           delta = tsc_end - tsc_start;
> > -   else {
> > -           delta = ULL_MAX - (tsc_end - tsc_start) + 1;
> > -           printf("TSC wrapped, delta=%llu\n", delta);
> > -   }
> > -   return delta;
> > -}
> > 
> >  /* calculate the tsc period */
> >  unsigned long long tsc_period_ps(void)
> > diff --git a/testcases/realtime/include/librttest.h 
> > b/testcases/realtime/include/librttest.h
> > index 16e1ec9..8f1b362 100644
> > --- a/testcases/realtime/include/librttest.h
> > +++ b/testcases/realtime/include/librttest.h
> > @@ -96,6 +96,29 @@ typedef struct { volatile int counter; } atomic_t;
> > 
> >  #define PRINT_BUFFER_SIZE (1024*1024*4)
> > 
> > +/* TSC macros */
> > +#define ULL_MAX 18446744073709551615ULL // (1 << 64) - 1
> > +#if defined(__i386__)
> > +#define rdtscll(val) __asm__ __volatile__("rdtsc" : "=A" (val))
> > +#elif defined(__x86_64__)
> > +#define rdtscll(val)                                       \
> > +   do {                                            \
> > +           uint32_t low, high;                     \
> > +           __asm__ __volatile__ ("rdtsc" : "=a" (low), "=d" (high)); \
> > +           val = (uint64_t)high << 32 | low;       \
> > +   } while(0)
> > +#elif defined(__powerpc__) /* 32bit version */
> > +#define rdtscll(val)                                                       
> > \
> > +    do {                                                           \
> > +           uint32_t tbhi, tblo ;                                   \
> > +           __asm__ __volatile__ ("mftbu %0" : "=r" (tbhi));        \
> > +           __asm__ __volatile__ ("mftbl %0" : "=r" (tblo));        \
> > +           val = 1000 * ((uint64_t) tbhi << 32) | tblo;            \
> > +   } while(0)
> > +#else
> > +#error
> > +#endif
> > +
> >  extern pthread_mutex_t _buffer_mutex;
> >  extern char * _print_buffer;
> >  extern int _print_buffer_offset;
> > @@ -312,6 +335,9 @@ void nsec_to_ts(nsec_t ns, struct timespec *ts);
> >   */
> >  int ts_to_nsec(struct timespec *ts, nsec_t *ns);
> > 
> > +/* return difference in microseconds */
> > +unsigned long long tsc_minus(unsigned long long tsc_start, unsigned long 
> > long tsc_end);
> > +
> >  /* rt_nanosleep: sleep for ns nanoseconds using clock_nanosleep
> >   */
> >  void rt_nanosleep(nsec_t ns);
> > diff --git a/testcases/realtime/lib/librttest.c 
> > b/testcases/realtime/lib/librttest.c
> > index 20cb7a1..2fc2513 100644
> > --- a/testcases/realtime/lib/librttest.c
> > +++ b/testcases/realtime/lib/librttest.c
> > @@ -398,6 +398,19 @@ void nsec_to_ts(nsec_t ns, struct timespec *ts)
> >     ts->tv_nsec = ns%NS_PER_SEC;
> >  }
> > 
> > +/* return difference in microseconds */
> > +unsigned long long tsc_minus(unsigned long long tsc_start, unsigned long 
> > long tsc_end)
> > +{
> > +   unsigned long long delta;
> > +   if (tsc_start < tsc_end)
> > +           delta = tsc_end - tsc_start;
> > +   else {
> > +           delta = ULL_MAX - (tsc_end - tsc_start) + 1;
> > +           printf("TSC wrapped, delta=%llu\n", delta);
> > +   }
> > +   return delta;
> > +}
> > +
> >  void rt_nanosleep_until(nsec_t ns) {
> >     struct timespec ts_sleep, ts_rem;
> >     int rc;


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to