X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=share%2Fkernelcompat.h;h=5cc5eaa22e70b963795619b963c1c2f8ed9504da;hb=93d0f2eaff675059588e958e3de74a1bb7dd4028;hp=c03b4086880c8ff2cd9a9f1dde973b4935c350a9;hpb=769d015768372ce7f68ff12bbc55aa339c3a6bcd;p=ust.git diff --git a/share/kernelcompat.h b/share/kernelcompat.h index c03b408..5cc5eaa 100644 --- a/share/kernelcompat.h +++ b/share/kernelcompat.h @@ -1,7 +1,6 @@ #ifndef KERNELCOMPAT_H #define KERNELCOMPAT_H -#include #include #include @@ -92,8 +91,6 @@ static inline long IS_ERR(const void *ptr) /* ATTRIBUTES */ #define ____cacheline_aligned -#define __init -#define __exit /* MATH */ @@ -141,7 +138,7 @@ static __inline__ int get_count_order(unsigned int count) #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)) @@ -152,17 +149,35 @@ static __inline__ int get_count_order(unsigned int count) /* 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) { @@ -188,14 +203,4 @@ static inline u32 trace_clock_freq_scale(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 */