/* ATTRIBUTES */
#define ____cacheline_aligned
-#define __init
-#define __exit
/* MATH */
#define __ALIGN_MASK(x,mask) (((x)+(mask))&~(mask))
#define PAGE_ALIGN(addr) ALIGN(addr, PAGE_SIZE)
#define PAGE_SIZE sysconf(_SC_PAGE_SIZE)
-#define PAGE_MASK (PAGE_SIZE-1)
+#define PAGE_MASK (~(PAGE_SIZE-1))
/* TRACE CLOCK */
-//ust// static inline u64 trace_clock_read64(void)
-//ust// {
-//ust// uint32_t low;
-//ust// uint32_t high;
-//ust// uint64_t retval;
-//ust// __asm__ volatile ("rdtsc\n" : "=a" (low), "=d" (high));
-//ust//
-//ust// retval = high;
-//ust// retval <<= 32;
-//ust// return retval | low;
-//ust// }
+/* 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;
+ uint32_t high;
+ uint64_t retval;
+ __asm__ volatile ("rdtsc\n" : "=a" (low), "=d" (high));
+
+ retval = high;
+ retval <<= 32;
+ return retval | low;
+}
+#endif
static inline u64 trace_clock_read64(void)
{
}
-/* LISTS */
-
-#define list_add_rcu list_add
-#define list_for_each_entry_rcu list_for_each_entry
-
-
-#define EXPORT_SYMBOL_GPL(a) /*nothing*/
-
-#define smp_processor_id() (-1)
-
#endif /* KERNELCOMPAT_H */