X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=share%2Fkernelcompat.h;h=3c23ac99477b8d95e4c367b59f58d7c95daf4834;hb=4268fdcdcb96f72e945f52b9f94f6ad841e297c9;hp=052f7688bb9f36d804529eca4ca65176fc04c428;hpb=1ae7f0744f280e97ab1a2adc548b8fd9f2cb21a4;p=ust.git diff --git a/share/kernelcompat.h b/share/kernelcompat.h index 052f768..3c23ac9 100644 --- a/share/kernelcompat.h +++ b/share/kernelcompat.h @@ -1,11 +1,16 @@ #ifndef KERNELCOMPAT_H #define KERNELCOMPAT_H +#include #include -#include "compiler.h" - #include +#include + +/* FIXME: libkcompat must not define arch-specific local ops, as ust *must* + * fallback to the normal atomic ops. Fix things so we don't add them and + * break things accidentally. + */ #define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)->member ) *__mptr = (ptr); \ @@ -40,14 +45,7 @@ static inline long IS_ERR(const void *ptr) } -/* FIXED SIZE INTEGERS */ - -//#include - -//typedef uint8_t u8; -//typedef uint16_t u16; -//typedef uint32_t u32; -//typedef uint64_t u64; +/* Min / Max */ #define min_t(type, x, y) ({ \ type __min1 = (x); \ @@ -71,14 +69,6 @@ static inline long IS_ERR(const void *ptr) #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 */ @@ -98,95 +88,6 @@ typedef int spinlock_t; #include #define printk(fmt, args...) printf(fmt, ## args) -/* MEMORY BARRIERS */ - -#define smp_mb__after_atomic_inc() 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 - -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), \ - (unsigned long)(n), sizeof(*(ptr)))) - -//#define local_cmpxchg cmpxchg -#define local_cmpxchg(l, o, n) (cmpxchg(&((l)->a.counter), (o), (n))) - -#define atomic_long_cmpxchg(v, old, new) (cmpxchg(&((v)->counter), (old), (new))) - - -/* LOCAL OPS */ - -//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 */ @@ -287,14 +188,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 */