X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=share%2Fkernelcompat.h;h=41746d9f05d21b3ea18e8c30e2e5c9ef69fec1ba;hb=16a93583f647cb6e5da1ed395462200aaf07bb2d;hp=c5512b8d4c848f4c35ee91c8cc23c9e4f080b3f6;hpb=8d938dbd14e689a294f8a251e4ac255985c65ad5;p=lttng-ust.git diff --git a/share/kernelcompat.h b/share/kernelcompat.h index c5512b8d..41746d9f 100644 --- a/share/kernelcompat.h +++ b/share/kernelcompat.h @@ -1,9 +1,12 @@ #ifndef KERNELCOMPAT_H #define KERNELCOMPAT_H +#include + #include "compiler.h" #include +#include #define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)->member ) *__mptr = (ptr); \ @@ -40,12 +43,12 @@ static inline long IS_ERR(const void *ptr) /* FIXED SIZE INTEGERS */ -#include +//#include -typedef uint8_t u8; -typedef uint16_t u16; -typedef uint32_t u32; -typedef uint64_t u64; +//typedef uint8_t u8; +//typedef uint16_t u16; +//typedef uint32_t u32; +//typedef uint64_t u64; #define min_t(type, x, y) ({ \ type __min1 = (x); \ @@ -63,29 +66,24 @@ typedef uint64_t u64; #include #define DEFINE_MUTEX(m) pthread_mutex_t (m) = PTHREAD_MUTEX_INITIALIZER; +#define DECLARE_MUTEX(m) extern pthread_mutex_t (m); #define mutex_lock(m) pthread_mutex_lock(m) #define mutex_unlock(m) pthread_mutex_unlock(m) -/* SPINLOCKS */ - -typedef int spinlock_t; - -#define spin_lock(a) /* nothing */ -#define spin_unlock(a) /* nothing */ -#define spin_lock_init(a) /* nothing */ - /* MALLOCATION */ #include #define kmalloc(s, t) malloc(s) -#define kzalloc(s, t) malloc(s) +#define kzalloc(s, t) zmalloc(s) #define kfree(p) free((void *)p) #define kstrdup(s, t) strdup(s) +#define zmalloc(s) calloc(1, s) + #define GFP_KERNEL /* PRINTK */ @@ -95,124 +93,90 @@ typedef int spinlock_t; /* MEMORY BARRIERS */ -#define smp_rmb() do {} while(0) -#define smp_wmb() do {} while(0) -#define smp_mb() do {} while(0) -#define smp_mb__after_atomic_inc() do {} while(0) - -#define read_barrier_depends() do {} while(0) -#define smp_read_barrier_depends() do {} while(0) +//#define smp_mb__after_atomic_inc() do {} while(0) -/* RCU */ - -#define rcu_assign_pointer(a, b) do {} while(0) -#define call_rcu_sched(a,b) do {} while(0) -#define rcu_barrier_sched() do {} while(0) +///* RCU */ +// +//#include "urcu.h" +//#define call_rcu_sched(a,b) b(a); synchronize_rcu() +//#define rcu_barrier_sched() do {} while(0) /* this nop is ok if call_rcu_sched does a synchronize_rcu() */ +//#define rcu_read_lock_sched_notrace() rcu_read_lock() +//#define rcu_read_unlock_sched_notrace() rcu_read_unlock() /* ATOMICITY */ -#include - -typedef struct { sig_atomic_t counter; } atomic_t; - -static inline int atomic_dec_and_test(atomic_t *p) -{ - (p->counter)--; - return !p->counter; -} - -static inline void atomic_set(atomic_t *p, int v) -{ - p->counter=v; -} - -static inline void atomic_inc(atomic_t *p) -{ - p->counter++; -} - -static int atomic_read(atomic_t *p) -{ - return p->counter; -} - -#define atomic_long_t atomic_t -#define atomic_long_set atomic_set -#define atomic_long_read atomic_read - -#include "asm.h" - -#define __xg(x) ((volatile long *)(x)) - -#define cmpxchg(ptr, o, n) \ - ((__typeof__(*(ptr)))__cmpxchg((ptr), (unsigned long)(o), \ +//#include +// +//static inline int atomic_dec_and_test(atomic_t *p) +//{ +// (p->counter)--; +// return !p->counter; +//} +// +//static inline void atomic_set(atomic_t *p, int v) +//{ +// p->counter=v; +//} +// +//static inline void atomic_inc(atomic_t *p) +//{ +// p->counter++; +//} +// +//static int atomic_read(atomic_t *p) +//{ +// return p->counter; +//} +// +//#define atomic_long_t atomic_t +//#define atomic_long_set atomic_set +//#define atomic_long_read atomic_read + +//#define __xg(x) ((volatile long *)(x)) + +//#define cmpxchg(ptr, o, n) \ +// ((__typeof__(*(ptr)))__cmpxchg((ptr), (unsigned long)(o), \ (unsigned long)(n), sizeof(*(ptr)))) -static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old, - unsigned long new, int size) -{ - unsigned long prev; - switch (size) { - case 1: - asm volatile("lock cmpxchgb %b1,%2" - : "=a"(prev) - : "q"(new), "m"(*__xg(ptr)), "0"(old) - : "memory"); - return prev; - case 2: - asm volatile("lock cmpxchgw %w1,%2" - : "=a"(prev) - : "r"(new), "m"(*__xg(ptr)), "0"(old) - : "memory"); - return prev; - case 4: - asm volatile("lock cmpxchgl %k1,%2" - : "=a"(prev) - : "r"(new), "m"(*__xg(ptr)), "0"(old) - : "memory"); - return prev; - case 8: - asm volatile("lock cmpxchgq %1,%2" - : "=a"(prev) - : "r"(new), "m"(*__xg(ptr)), "0"(old) - : "memory"); - return prev; - } - return old; -} +//#define local_cmpxchg cmpxchg +//#define local_cmpxchg(l, o, n) (cmpxchg(&((l)->a.counter), (o), (n))) -#define local_cmpxchg cmpxchg -#define atomic_long_cmpxchg(v, old, new) (cmpxchg(&((v)->counter), (old), (new))) +//#define atomic_long_cmpxchg(v, old, new) (cmpxchg(&((v)->counter), (old), (new))) /* LOCAL OPS */ -typedef int local_t; - -static inline void local_inc(local_t *a) -{ - (*a)++; -} - -static inline void local_set(local_t *a, int v) -{ - *a = v; -} - -static inline void local_add(int v, local_t *a) -{ - *a += v; -} - -static int local_add_return(int v, local_t *a) -{ - return *a += v; -} - -static inline int local_read(local_t *a) -{ - return *a; -} +//typedef int local_t; +//typedef struct +//{ +// atomic_long_t a; +//} local_t; +// +// +//static inline void local_inc(local_t *l) +//{ +// (l->a.counter)++; +//} +// +//static inline void local_set(local_t *l, int v) +//{ +// l->a.counter = v; +//} +// +//static inline void local_add(int v, local_t *l) +//{ +// l->a.counter += v; +//} +// +//static int local_add_return(int v, local_t *l) +//{ +// return l->a.counter += v; +//} +// +//static inline int local_read(local_t *l) +//{ +// return l->a.counter; +//} /* ATTRIBUTES */ @@ -278,19 +242,39 @@ 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// } + static inline u64 trace_clock_read64(void) { - return 0LL; + struct timeval tv; + u64 retval; + + gettimeofday(&tv, NULL); + retval = tv.tv_sec; + retval *= 1000000; + retval += tv.tv_usec; + + return retval; } -static inline unsigned int trace_clock_frequency(void) +static inline u64 trace_clock_frequency(void) { - return 0LL; + return 1000000LL; } static inline u32 trace_clock_freq_scale(void) { - return 0; + return 1; } @@ -302,4 +286,6 @@ static inline u32 trace_clock_freq_scale(void) #define EXPORT_SYMBOL_GPL(a) /*nothing*/ +#define smp_processor_id() (-1) + #endif /* KERNELCOMPAT_H */