restore gettimeofday()-based time source
[ust.git] / share / kernelcompat.h
index fada46f06f448b00538ea9f66883f9fcd9dd52bc..219ee11836c494e1c0fb3bfb8e0879f096bb7a12 100644 (file)
@@ -92,8 +92,6 @@ static inline long IS_ERR(const void *ptr)
 /* ATTRIBUTES */
 
 #define ____cacheline_aligned
-#define __init
-#define __exit
 
 /* MATH */
 
@@ -152,6 +150,23 @@ static __inline__ int get_count_order(unsigned int count)
 
 /* TRACE CLOCK */
 
+/* There are two types of clocks that can be used.
+   - TSC based clock
+   - gettimeofday() clock
+
+   Microbenchmarks on Linux 2.6.30 on Core2 Duo 3GHz (functions are inlined):
+     Calls (100000000) to tsc(): 4004035641 cycles or 40 cycles/call
+     Calls (100000000) to gettimeofday(): 9723158352 cycles or 97 cycles/call
+
+   For merging traces with the kernel, a time source compatible with that of
+   the kernel is necessary.
+
+*/
+
+#if 0
+/* 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.
+ */
 static inline u64 trace_clock_read64(void)
 {
        uint32_t low;
@@ -163,19 +178,20 @@ static inline u64 trace_clock_read64(void)
        retval <<= 32;
        return retval | low;
 }
+#endif
 
-//static inline u64 trace_clock_read64(void)
-//{
-//     struct timeval tv;
-//     u64 retval;
-//
-//     gettimeofday(&tv, NULL);
-//     retval = tv.tv_sec;
-//     retval *= 1000000;
-//     retval += tv.tv_usec;
-//
-//     return retval;
-//}
+static inline u64 trace_clock_read64(void)
+{
+       struct timeval tv;
+       u64 retval;
+
+       gettimeofday(&tv, NULL);
+       retval = tv.tv_sec;
+       retval *= 1000000;
+       retval += tv.tv_usec;
+
+       return retval;
+}
 
 static inline u64 trace_clock_frequency(void)
 {
This page took 0.023939 seconds and 4 git commands to generate.