From: gilles.carry <gilles.carry>
Signed-off-by: Gilles Carry <[EMAIL PROTECTED]>
Cc: Tim Chavez <[EMAIL PROTECTED]>
---
.../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;
--
1.5.5.GIT
-------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list