code cleanups
[ust.git] / share / kernelcompat.h
index 5bd8e87503f22ecf30b3d2d170f77c5e3e15b13b..b0c77e0972a66f8d03235494f4e5be72fcbc281a 100644 (file)
@@ -1,9 +1,16 @@
 #ifndef KERNELCOMPAT_H
 #define KERNELCOMPAT_H
 
-#include "compiler.h"
+#include <compiler.h>
+#include <kcompat.h>
 
 #include <string.h>
+#include <sys/time.h>
+
+/* 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);    \
@@ -14,6 +21,7 @@
 #define KERN_INFO ""
 #define KERN_ERR ""
 #define KERN_ALERT ""
+#define KERN_WARNING ""
 
 /* ERROR OPS */
 
@@ -37,14 +45,7 @@ static inline long IS_ERR(const void *ptr)
 }
 
 
-/* FIXED SIZE INTEGERS */
-
-#include <stdint.h>
-
-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);                      \
@@ -62,69 +63,33 @@ typedef uint64_t u64;
 #include <pthread.h>
 
 #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)
 
+
 /* MALLOCATION */
 
 #include <stdlib.h>
 
 #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 */
 
 #include <stdio.h>
 #define printk(fmt, args...) printf(fmt, ## args)
 
-/* 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)
-
-/* 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)
-
-/* ATOMICITY */
-
-#include <signal.h>
-
-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;
-}
-
-/* CACHE */
+/* ATTRIBUTES */
 
 #define ____cacheline_aligned
 
@@ -166,6 +131,19 @@ static __inline__ int get_count_order(unsigned int count)
 }
 
 
+
+
+#include <unistd.h>
+
+#define ALIGN(x,a)             __ALIGN_MASK(x,(typeof(x))(a)-1)
+#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))
+
+
+
+
 /* ARRAYS */
 
 #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
@@ -174,17 +152,38 @@ static __inline__ int get_count_order(unsigned int count)
 
 static inline u64 trace_clock_read64(void)
 {
-       return 0LL;
+       uint32_t low;
+       uint32_t high;
+       uint64_t retval;
+       __asm__ volatile ("rdtsc\n" : "=a" (low), "=d" (high));
+
+       retval = high;
+       retval <<= 32;
+       return retval | low;
 }
 
-static inline unsigned int trace_clock_frequency(void)
+//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)
 {
-       return 0LL;
+       return 1000000LL;
 }
 
 static inline u32 trace_clock_freq_scale(void)
 {
-       return 0;
+       return 1;
 }
 
+
 #endif /* KERNELCOMPAT_H */
This page took 0.023768 seconds and 4 git commands to generate.