Re: [Xenomai-core] [PATCH 2/2] Unify asm-x86/atomic.h

2008-08-25 Thread Jan Kiszka
Philippe Gerum wrote:
> Gilles Chanteperdrix wrote:
>> Jan Kiszka wrote:
>>> +#include 
>>> +
>>> +#if BITS_PER_LONG != 32
>>> +#error Upgrade to kernel 2.6!
>>> +#endif
>> I am not well versed with the 2.4 support. But are we sure we support no
>> 64 bits architecture with 2.4 ? What about ppc64 ?
>>
> 
> No other 2.4 port will be merged, so this should be ok. ppc64 is 2.6 only for 
> us.

Fine, so I merged my patch.

Jan

-- 
Siemens AG, Corporate Technology, CT SE 2
Corporate Competence Center Embedded Linux

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] [PATCH 2/2] Unify asm-x86/atomic.h

2008-08-25 Thread Philippe Gerum
Gilles Chanteperdrix wrote:
> Jan Kiszka wrote:
>> +#include 
>> +
>> +#if BITS_PER_LONG != 32
>> +#error Upgrade to kernel 2.6!
>> +#endif
> 
> I am not well versed with the 2.4 support. But are we sure we support no
> 64 bits architecture with 2.4 ? What about ppc64 ?
> 

No other 2.4 port will be merged, so this should be ok. ppc64 is 2.6 only for 
us.

-- 
Philippe.

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] [PATCH 2/2] Unify asm-x86/atomic.h

2008-08-25 Thread Gilles Chanteperdrix
Jan Kiszka wrote:
> Gilles Chanteperdrix wrote:
>> Jan Kiszka wrote:
>>> +#include 
>>> +
>>> +#if BITS_PER_LONG != 32
>>> +#error Upgrade to kernel 2.6!
>>> +#endif
>> I am not well versed with the 2.4 support. But are we sure we support no
>> 64 bits architecture with 2.4 ? What about ppc64 ?
> 
> AFAIK, only ppc32 is supported on kernel 2.4 now, and I don't think
> ppc64 ever was. Just i386 and ppc32 should bother us /wrt wrapping.

It is OK for me then.

-- 
 Gilles.

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] [PATCH 2/2] Unify asm-x86/atomic.h

2008-08-25 Thread Jan Kiszka
Jan Kiszka wrote:
> Gilles Chanteperdrix wrote:
>> Jan Kiszka wrote:
>>> Gilles Chanteperdrix wrote:
 Jan Kiszka wrote:
> ...and also automatically fixes the missing LOCK prefix for
> pthread_mutex_* services on x86_32 SMP.
 This looks to me as a half-way unification. Can we not totally get rid
 of atomic_32.h and atomic_64.h ? I mean since we are using unsigned long
 as atomic_t on both platforms, there should not be much difference
 (except maybe the inline asm).

>>> I could merge all atomic_32/64.h hunks into atomic.h if that this
>>> preferred, but I cannot help getting rid of the atomic_t vs. atomic64_t
>>> differences, thus the sub-arch specific part cannot be reduced as far as
>>> I see it ATM.
>> We could use atomic_long_t on the two arches.
> 
> OK, but then it becomes wrapping business (2.4...) - on the long term a
> vanishing issue, granted. Will look into this.

Here we go, an atomic_long_t based unification patch. Cannot test 2.4
kernel built, unfortunately, but the rest is fine (note: requires
bootstrap run).

Jan

---
 include/asm-generic/wrappers.h |   82 ++-
 include/asm-x86/Makefile.am|2 
 include/asm-x86/atomic.h   |  142 -
 include/asm-x86/atomic_32.h|  101 -
 include/asm-x86/atomic_64.h|  102 -
 5 files changed, 203 insertions(+), 226 deletions(-)

Index: b/include/asm-x86/atomic.h
===
--- a/include/asm-x86/atomic.h
+++ b/include/asm-x86/atomic.h
@@ -1,5 +1,141 @@
-#ifdef __i386__
-#include "atomic_32.h"
+/*
+ * Copyright (C) 2007 Philippe Gerum <[EMAIL PROTECTED]>.
+ *
+ * Xenomai is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published
+ * by the Free Software Foundation; either version 2 of the License,
+ * or (at your option) any later version.
+ *
+ * Xenomai is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Xenomai; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ */
+
+#ifndef _XENO_ASM_X86_ATOMIC_H
+#define _XENO_ASM_X86_ATOMIC_H
+
+#include 
+
+typedef unsigned long atomic_flags_t;
+
+#ifdef __KERNEL__
+
+#include 
+#include 
+#include 
+
+#define xnarch_atomic_set(pcounter,i)  atomic_long_set(pcounter,i)
+#define xnarch_atomic_get(pcounter)atomic_long_read(pcounter)
+#define xnarch_atomic_inc(pcounter)atomic_long_inc(pcounter)
+#define xnarch_atomic_dec(pcounter)atomic_long_dec(pcounter)
+#define xnarch_atomic_inc_and_test(pcounter) \
+   atomic_long_inc_and_test(pcounter)
+#define xnarch_atomic_dec_and_test(pcounter) \
+   atomic_long_dec_and_test(pcounter)
+#define xnarch_atomic_cmpxchg(pcounter,old,new) \
+   atomic_long_cmpxchg((pcounter),(old),(new))
+
+typedef atomic_long_t atomic_counter_t;
+typedef atomic_long_t xnarch_atomic_t;
+
+#define xnarch_atomic_set_mask(pflags,mask) \
+   atomic_set_mask((mask),(unsigned *)(pflags))
+#define xnarch_atomic_clear_mask(pflags,mask) \
+   atomic_clear_mask((mask),(unsigned *)(pflags))
+#define xnarch_atomic_xchg(ptr,x)  xchg(ptr,x)
+
+#define xnarch_memory_barrier()smp_mb()
+
+#else /* !__KERNEL__ */
+
+#include 
+
+#ifdef CONFIG_SMP
+#define LOCK_PREFIX "lock ; "
 #else
-#include "atomic_64.h"
+#define LOCK_PREFIX ""
 #endif
+
+typedef struct { unsigned long counter; } xnarch_atomic_t;
+
+#define xnarch_atomic_get(v)   ((v)->counter)
+
+#define xnarch_atomic_set(v,i) (((v)->counter) = (i))
+
+#define xnarch_write_memory_barrier()  xnarch_memory_barrier()
+
+#ifdef __i386__
+
+struct __xeno_xchg_dummy { unsigned long a[100]; };
+#define __xeno_xg(x) ((struct __xeno_xchg_dummy *)(x))
+
+static inline unsigned long xnarch_atomic_xchg (volatile void *ptr,
+   unsigned long x)
+{
+   __asm__ __volatile__("xchgl %0,%1"
+:"=r" (x)
+:"m" (*__xeno_xg(ptr)), "0" (x)
+:"memory");
+   return x;
+}
+
+static inline unsigned long
+xnarch_atomic_cmpxchg(xnarch_atomic_t *v, unsigned long old, unsigned long 
newval)
+{
+   volatile void *ptr = &v->counter;
+   unsigned long prev;
+
+   __asm__ __volatile__(LOCK_PREFIX "cmpxchgl %1,%2"
+: "=a"(prev)
+: "r"(newval), "m"(*__xeno_xg(ptr)), "0"(old)
+: "memory");
+   return prev;
+}
+
+#define xnarch_memory_barrier()__asm__ __volatile__("": : 
:"memory")

Re: [Xenomai-core] [PATCH 2/2] Unify asm-x86/atomic.h

2008-08-25 Thread Jan Kiszka
Gilles Chanteperdrix wrote:
> Jan Kiszka wrote:
>> +#include 
>> +
>> +#if BITS_PER_LONG != 32
>> +#error Upgrade to kernel 2.6!
>> +#endif
> 
> I am not well versed with the 2.4 support. But are we sure we support no
> 64 bits architecture with 2.4 ? What about ppc64 ?

AFAIK, only ppc32 is supported on kernel 2.4 now, and I don't think
ppc64 ever was. Just i386 and ppc32 should bother us /wrt wrapping.

Jan

-- 
Siemens AG, Corporate Technology, CT SE 2
Corporate Competence Center Embedded Linux

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] [PATCH 2/2] Unify asm-x86/atomic.h

2008-08-25 Thread Gilles Chanteperdrix
Jan Kiszka wrote:
> +#include 
> +
> +#if BITS_PER_LONG != 32
> +#error Upgrade to kernel 2.6!
> +#endif

I am not well versed with the 2.4 support. But are we sure we support no
64 bits architecture with 2.4 ? What about ppc64 ?

-- 
 Gilles.

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] [PATCH 2/2] Unify asm-x86/atomic.h

2008-08-23 Thread Jan Kiszka
Gilles Chanteperdrix wrote:
> Jan Kiszka wrote:
>> Gilles Chanteperdrix wrote:
>>> Jan Kiszka wrote:
 ...and also automatically fixes the missing LOCK prefix for
 pthread_mutex_* services on x86_32 SMP.
>>> This looks to me as a half-way unification. Can we not totally get rid
>>> of atomic_32.h and atomic_64.h ? I mean since we are using unsigned long
>>> as atomic_t on both platforms, there should not be much difference
>>> (except maybe the inline asm).
>>>
>> I could merge all atomic_32/64.h hunks into atomic.h if that this
>> preferred, but I cannot help getting rid of the atomic_t vs. atomic64_t
>> differences, thus the sub-arch specific part cannot be reduced as far as
>> I see it ATM.
> 
> We could use atomic_long_t on the two arches.

OK, but then it becomes wrapping business (2.4...) - on the long term a
vanishing issue, granted. Will look into this.

Jan




signature.asc
Description: OpenPGP digital signature
___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] [PATCH 2/2] Unify asm-x86/atomic.h

2008-08-23 Thread Gilles Chanteperdrix
Jan Kiszka wrote:
> Gilles Chanteperdrix wrote:
>> Jan Kiszka wrote:
>>> ...and also automatically fixes the missing LOCK prefix for
>>> pthread_mutex_* services on x86_32 SMP.
>> This looks to me as a half-way unification. Can we not totally get rid
>> of atomic_32.h and atomic_64.h ? I mean since we are using unsigned long
>> as atomic_t on both platforms, there should not be much difference
>> (except maybe the inline asm).
>>
> 
> I could merge all atomic_32/64.h hunks into atomic.h if that this
> preferred, but I cannot help getting rid of the atomic_t vs. atomic64_t
> differences, thus the sub-arch specific part cannot be reduced as far as
> I see it ATM.

We could use atomic_long_t on the two arches.

-- 
Gilles.

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] [PATCH 2/2] Unify asm-x86/atomic.h

2008-08-23 Thread Jan Kiszka
Gilles Chanteperdrix wrote:
> Jan Kiszka wrote:
>> ...and also automatically fixes the missing LOCK prefix for
>> pthread_mutex_* services on x86_32 SMP.
> 
> This looks to me as a half-way unification. Can we not totally get rid
> of atomic_32.h and atomic_64.h ? I mean since we are using unsigned long
> as atomic_t on both platforms, there should not be much difference
> (except maybe the inline asm).
> 

I could merge all atomic_32/64.h hunks into atomic.h if that this
preferred, but I cannot help getting rid of the atomic_t vs. atomic64_t
differences, thus the sub-arch specific part cannot be reduced as far as
I see it ATM.

However, yesterday's version contained a regression /wrt 32 bit (missing
atomic_counter_t and xnarch_atomic_t type definitions), this one is
better:

---
 include/asm-x86/atomic.h|   64 
 include/asm-x86/atomic_32.h |   31 -
 include/asm-x86/atomic_64.h |   33 --
 3 files changed, 65 insertions(+), 63 deletions(-)

Index: b/include/asm-x86/atomic.h
===
--- a/include/asm-x86/atomic.h
+++ b/include/asm-x86/atomic.h
@@ -1,5 +1,69 @@
+/*
+ * Copyright (C) 2007 Philippe Gerum <[EMAIL PROTECTED]>.
+ *
+ * Xenomai is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published
+ * by the Free Software Foundation; either version 2 of the License,
+ * or (at your option) any later version.
+ *
+ * Xenomai is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Xenomai; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ */
+
+#ifndef _XENO_ASM_X86_ATOMIC_H
+#define _XENO_ASM_X86_ATOMIC_H
+
+#include 
+
+typedef unsigned long atomic_flags_t;
+
+#ifdef __KERNEL__
+
+#include 
+#include 
+#include 
+
+#define xnarch_atomic_set_mask(pflags,mask) \
+   atomic_set_mask((mask),(unsigned *)(pflags))
+#define xnarch_atomic_clear_mask(pflags,mask) \
+   atomic_clear_mask((mask),(unsigned *)(pflags))
+#define xnarch_atomic_xchg(ptr,x)  xchg(ptr,x)
+
+#define xnarch_memory_barrier()  smp_mb()
+
+#else /* !__KERNEL__ */
+
+#include 
+
+#ifdef CONFIG_SMP
+#define LOCK_PREFIX "lock ; "
+#else
+#define LOCK_PREFIX ""
+#endif
+
+typedef struct { unsigned long counter; } xnarch_atomic_t;
+
+#define xnarch_atomic_get(v)   ((v)->counter)
+
+#define xnarch_atomic_set(v,i) (((v)->counter) = (i))
+
+#define xnarch_write_memory_barrier()  xnarch_memory_barrier()
+
+#endif /* __KERNEL__ */
+
 #ifdef __i386__
 #include "atomic_32.h"
 #else
 #include "atomic_64.h"
 #endif
+
+#include 
+
+#endif /* !_XENO_ASM_X86_ATOMIC_64_H */
Index: b/include/asm-x86/atomic_32.h
===
--- a/include/asm-x86/atomic_32.h
+++ b/include/asm-x86/atomic_32.h
@@ -19,48 +19,26 @@
 
 #ifndef _XENO_ASM_X86_ATOMIC_32_H
 #define _XENO_ASM_X86_ATOMIC_32_H
-#define _XENO_ASM_X86_ATOMIC_H
 
 #ifdef __KERNEL__
 
-#include 
-#include 
-#include 
-
 #define xnarch_atomic_set(pcounter,i)  atomic_set(pcounter,i)
 #define xnarch_atomic_get(pcounter)atomic_read(pcounter)
 #define xnarch_atomic_inc(pcounter)atomic_inc(pcounter)
 #define xnarch_atomic_dec(pcounter)atomic_dec(pcounter)
 #define xnarch_atomic_inc_and_test(pcounter)   atomic_inc_and_test(pcounter)
 #define xnarch_atomic_dec_and_test(pcounter)   atomic_dec_and_test(pcounter)
-#define xnarch_atomic_set_mask(pflags,mask)atomic_set_mask(mask,pflags)
-#define xnarch_atomic_clear_mask(pflags,mask)  atomic_clear_mask(mask,pflags)
-#define xnarch_atomic_xchg(ptr,x)  xchg(ptr,x)
 #define xnarch_atomic_cmpxchg(pcounter,old,new) \
atomic_cmpxchg((pcounter),(old),(new))
 
-#define xnarch_memory_barrier()  smp_mb()
-
 typedef atomic_t atomic_counter_t;
 typedef atomic_t xnarch_atomic_t;
 
 #else /* !__KERNEL__ */
 
-#ifdef CONFIG_SMP
-#define LOCK_PREFIX "lock ; "
-#else
-#define LOCK_PREFIX ""
-#endif
-
-typedef struct { int counter; } xnarch_atomic_t;
-
 struct __xeno_xchg_dummy { unsigned long a[100]; };
 #define __xeno_xg(x) ((struct __xeno_xchg_dummy *)(x))
 
-#define xnarch_atomic_get(v)   ((v)->counter)
-
-#define xnarch_atomic_set(v,i) (((v)->counter) = (i))
-
 static inline unsigned long xnarch_atomic_xchg (volatile void *ptr,
unsigned long x)
 {
@@ -84,17 +62,10 @@ xnarch_atomic_cmpxchg(xnarch_atomic_t *v
return prev;
 }
 
-#define xnarch_memory_barrier()  __asm__ __volatile__("": : :"memory")
-
+#define xnarch_memory_barrier

Re: [Xenomai-core] [PATCH 2/2] Unify asm-x86/atomic.h

2008-08-22 Thread Gilles Chanteperdrix
Jan Kiszka wrote:
> ...and also automatically fixes the missing LOCK prefix for
> pthread_mutex_* services on x86_32 SMP.

This looks to me as a half-way unification. Can we not totally get rid
of atomic_32.h and atomic_64.h ? I mean since we are using unsigned long
as atomic_t on both platforms, there should not be much difference
(except maybe the inline asm).

-- 
 Gilles.

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] [PATCH 2/2] Unify asm-x86/atomic.h

2008-08-22 Thread Jan Kiszka
...and also automatically fixes the missing LOCK prefix for
pthread_mutex_* services on x86_32 SMP.

---
 include/asm-x86/atomic.h|   64 
 include/asm-x86/atomic_32.h |   31 -
 include/asm-x86/atomic_64.h |   33 --
 3 files changed, 64 insertions(+), 64 deletions(-)

Index: b/include/asm-x86/atomic.h
===
--- a/include/asm-x86/atomic.h
+++ b/include/asm-x86/atomic.h
@@ -1,5 +1,69 @@
+/*
+ * Copyright (C) 2007 Philippe Gerum <[EMAIL PROTECTED]>.
+ *
+ * Xenomai is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published
+ * by the Free Software Foundation; either version 2 of the License,
+ * or (at your option) any later version.
+ *
+ * Xenomai is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Xenomai; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ */
+
+#ifndef _XENO_ASM_X86_ATOMIC_H
+#define _XENO_ASM_X86_ATOMIC_H
+
+#include 
+
+typedef unsigned long atomic_flags_t;
+
+#ifdef __KERNEL__
+
+#include 
+#include 
+#include 
+
+#define xnarch_atomic_set_mask(pflags,mask) \
+   atomic_set_mask((mask),(unsigned *)(pflags))
+#define xnarch_atomic_clear_mask(pflags,mask) \
+   atomic_clear_mask((mask),(unsigned *)(pflags))
+#define xnarch_atomic_xchg(ptr,x)  xchg(ptr,x)
+
+#define xnarch_memory_barrier()  smp_mb()
+
+#else /* !__KERNEL__ */
+
+#include 
+
+#ifdef CONFIG_SMP
+#define LOCK_PREFIX "lock ; "
+#else
+#define LOCK_PREFIX ""
+#endif
+
+typedef struct { unsigned long counter; } xnarch_atomic_t;
+
+#define xnarch_atomic_get(v)   ((v)->counter)
+
+#define xnarch_atomic_set(v,i) (((v)->counter) = (i))
+
+#define xnarch_write_memory_barrier()  xnarch_memory_barrier()
+
+#endif /* __KERNEL__ */
+
 #ifdef __i386__
 #include "atomic_32.h"
 #else
 #include "atomic_64.h"
 #endif
+
+#include 
+
+#endif /* !_XENO_ASM_X86_ATOMIC_64_H */
Index: b/include/asm-x86/atomic_32.h
===
--- a/include/asm-x86/atomic_32.h
+++ b/include/asm-x86/atomic_32.h
@@ -19,48 +19,23 @@
 
 #ifndef _XENO_ASM_X86_ATOMIC_32_H
 #define _XENO_ASM_X86_ATOMIC_32_H
-#define _XENO_ASM_X86_ATOMIC_H
 
 #ifdef __KERNEL__
 
-#include 
-#include 
-#include 
-
 #define xnarch_atomic_set(pcounter,i)  atomic_set(pcounter,i)
 #define xnarch_atomic_get(pcounter)atomic_read(pcounter)
 #define xnarch_atomic_inc(pcounter)atomic_inc(pcounter)
 #define xnarch_atomic_dec(pcounter)atomic_dec(pcounter)
 #define xnarch_atomic_inc_and_test(pcounter)   atomic_inc_and_test(pcounter)
 #define xnarch_atomic_dec_and_test(pcounter)   atomic_dec_and_test(pcounter)
-#define xnarch_atomic_set_mask(pflags,mask)atomic_set_mask(mask,pflags)
-#define xnarch_atomic_clear_mask(pflags,mask)  atomic_clear_mask(mask,pflags)
-#define xnarch_atomic_xchg(ptr,x)  xchg(ptr,x)
 #define xnarch_atomic_cmpxchg(pcounter,old,new) \
atomic_cmpxchg((pcounter),(old),(new))
 
-#define xnarch_memory_barrier()  smp_mb()
-
-typedef atomic_t atomic_counter_t;
-typedef atomic_t xnarch_atomic_t;
-
 #else /* !__KERNEL__ */
 
-#ifdef CONFIG_SMP
-#define LOCK_PREFIX "lock ; "
-#else
-#define LOCK_PREFIX ""
-#endif
-
-typedef struct { int counter; } xnarch_atomic_t;
-
 struct __xeno_xchg_dummy { unsigned long a[100]; };
 #define __xeno_xg(x) ((struct __xeno_xchg_dummy *)(x))
 
-#define xnarch_atomic_get(v)   ((v)->counter)
-
-#define xnarch_atomic_set(v,i) (((v)->counter) = (i))
-
 static inline unsigned long xnarch_atomic_xchg (volatile void *ptr,
unsigned long x)
 {
@@ -88,13 +63,7 @@ xnarch_atomic_cmpxchg(xnarch_atomic_t *v
 
 #define xnarch_read_memory_barrier() \
__asm__ __volatile__ (LOCK_PREFIX "addl $0,0(%%esp)": : :"memory")
-#define xnarch_write_memory_barrier()  xnarch_memory_barrier()
 
 #endif /* !__KERNEL__ */
 
-typedef unsigned long atomic_flags_t;
-
-#include 
-#include 
-
 #endif /* !_XENO_ASM_X86_ATOMIC_32_H */
Index: b/include/asm-x86/atomic_64.h
===
--- a/include/asm-x86/atomic_64.h
+++ b/include/asm-x86/atomic_64.h
@@ -19,55 +19,25 @@
 
 #ifndef _XENO_ASM_X86_ATOMIC_64_H
 #define _XENO_ASM_X86_ATOMIC_64_H
-#define _XENO_ASM_X86_ATOMIC_H
-
-#include 
-
-typedef unsigned long atomic_flags_t;
 
 #ifdef __KERNEL__
 
-#include 
-#include 
-#include 
-
 #define xnarch_atomic_set(pcounter,i)  atomic64_set(pcounter,i)
 #define xnarch_at