Add offsetof to compiler.h
authorMathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Wed, 23 Sep 2009 17:13:29 +0000 (13:13 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Wed, 23 Sep 2009 17:13:29 +0000 (13:13 -0400)
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
compiler.h
tests/api_gcc.h
tests/api_ppc.h
tests/api_x86.h

index 142b9a60fa98c011096a1fba025d962e63b07520..99972f30e2ba89726f663c78261f4e9203b6d026 100644 (file)
  */
 #define ACCESS_ONCE(x) (*(volatile typeof(x) *)&x)
 
+#if (__GNUC__ == 4)
+#define __compiler_offsetof(a, b) __builtin_offsetof(a, b)
+#endif
+
+#ifdef __compiler_offsetof
+#define offsetof(TYPE, MEMBER) __compiler_offsetof(TYPE, MEMBER)
+#else
+#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
+#endif
+
 #endif /* _COMPILER_H */
index 1ad7345e7ce1ad681bd2043813bdb5aaaff916a5..963f842215dd1eb4e95186b99a7059dbf70a9fe1 100644 (file)
@@ -282,12 +282,12 @@ cmpxchg(volatile long *ptr, long oldval, long newval)
 #include <pthread.h>
 #include <sched.h>
 #include <sys/param.h>
+#include <arch.h>
 /* #include "atomic.h" */
 
 /*
  * Compiler magic.
  */
-#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
 #define container_of(ptr, type, member) ({                     \
        const typeof( ((type *)0)->member ) *__mptr = (ptr);    \
        (type *)( (char *)__mptr - offsetof(type,member) );})
@@ -634,7 +634,6 @@ static void smp_init(void)
 #define LIST_POISON1  ((void *) 0x00100100)
 #define LIST_POISON2  ((void *) 0x00200200)
 
-#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
 #define container_of(ptr, type, member) ({                     \
        const typeof( ((type *)0)->member ) *__mptr = (ptr);    \
        (type *)( (char *)__mptr - offsetof(type,member) );})
index 8a03faa1c0adf1adee77e525df9b102e14b010b3..1d9c47e277b86ec87abc8fdc87f37cb15d990b49 100644 (file)
@@ -653,7 +653,6 @@ static __inline__ int atomic_add_unless(atomic_t *v, int a, int u)
 /*
  * Compiler magic.
  */
-#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
 #define container_of(ptr, type, member) ({                     \
        const typeof( ((type *)0)->member ) *__mptr = (ptr);    \
        (type *)( (char *)__mptr - offsetof(type,member) );})
@@ -1005,7 +1004,6 @@ static void smp_init(void)
 #define LIST_POISON1  ((void *) 0x00100100)
 #define LIST_POISON2  ((void *) 0x00200200)
 
-#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
 #define container_of(ptr, type, member) ({                     \
        const typeof( ((type *)0)->member ) *__mptr = (ptr);    \
        (type *)( (char *)__mptr - offsetof(type,member) );})
index f48fce939453b5922113a74f34d0959709bf1af5..d64eb8d4a6a2d89a17c4f4636697d303d778811e 100644 (file)
@@ -346,7 +346,6 @@ __asm__ __volatile__(LOCK_PREFIX "orl %0,%1" \
 /*
  * Compiler magic.
  */
-#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
 #define container_of(ptr, type, member) ({                     \
        const typeof( ((type *)0)->member ) *__mptr = (ptr);    \
        (type *)( (char *)__mptr - offsetof(type,member) );})
@@ -693,7 +692,6 @@ static void smp_init(void)
 #define LIST_POISON1  ((void *) 0x00100100)
 #define LIST_POISON2  ((void *) 0x00200200)
 
-#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
 #define container_of(ptr, type, member) ({                     \
        const typeof( ((type *)0)->member ) *__mptr = (ptr);    \
        (type *)( (char *)__mptr - offsetof(type,member) );})
This page took 0.027909 seconds and 4 git commands to generate.