Move immediate.h, marker.h and tracepoint.h to include/ust/
[ust.git] / share / kernelcompat.h
index fada46f06f448b00538ea9f66883f9fcd9dd52bc..5cc5eaa22e70b963795619b963c1c2f8ed9504da 100644 (file)
@@ -1,7 +1,6 @@
 #ifndef KERNELCOMPAT_H
 #define KERNELCOMPAT_H
 
-#include <compiler.h>
 #include <kcompat.h>
 
 #include <string.h>
@@ -92,8 +91,6 @@ static inline long IS_ERR(const void *ptr)
 /* ATTRIBUTES */
 
 #define ____cacheline_aligned
-#define __init
-#define __exit
 
 /* MATH */
 
@@ -152,6 +149,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 +177,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.024018 seconds and 4 git commands to generate.