X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=urcu%2Fcompiler.h;h=5b7bb305b2de83b1828171f506d7241d3c692d03;hb=1b27a7725e853b9f0673a0ed2639b8dc1065f21b;hp=6f6d3e97eb3693ebdd7f8cc509b2acde5c709594;hpb=ec4e58a3aba2084440012f8ccac3a31eb6101183;p=urcu.git diff --git a/urcu/compiler.h b/urcu/compiler.h index 6f6d3e9..5b7bb30 100644 --- a/urcu/compiler.h +++ b/urcu/compiler.h @@ -18,10 +18,12 @@ * modified is included with the above copyright notice. */ +#include /* for offsetof */ + #define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0) -#define barrier() asm volatile("" : : : "memory"); +#define barrier() asm volatile("" : : : "memory") /* * Instruct the compiler to perform only a single access to a variable @@ -37,14 +39,20 @@ */ #define ACCESS_ONCE(x) (*(volatile typeof(x) *)&x) -#if (__GNUC__ == 4) -#define __compiler_offsetof(a, b) __builtin_offsetof(a, b) +#ifndef max +#define max(a,b) ((a)>(b)?(a):(b)) +#endif + +#ifndef min +#define min(a,b) ((a)<(b)?(a):(b)) #endif -#ifdef __compiler_offsetof -#define offsetof(TYPE, MEMBER) __compiler_offsetof(TYPE, MEMBER) +#if defined(__SIZEOF_LONG__) +#define BITS_PER_LONG (__SIZEOF_LONG__ * 8) +#elif defined(_LP64) +#define BITS_PER_LONG 64 #else -#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) +#define BITS_PER_LONG 32 #endif #endif /* _URCU_COMPILER_H */