#ifndef _EXT2FS_COMPILER_H #define _EXT2FS_COMPILER_H #ifndef __has_builtin #define __has_builtin(x) 0 #endif #undef offsetof #if __has_builtin(__builtin_offsetof) #define offsetof(TYPE, MEMBER) __builtin_offsetof(TYPE, MEMBER) #elif defined(__compiler_offsetof) #define offsetof(TYPE,MEMBER) __compiler_offsetof(TYPE,MEMBER) #else #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) #endif #define container_of(ptr, type, member) ({ \ const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \ (type *)( (char *)__mptr - offsetof(type,member) );}) #endif /* _EXT2FS_COMPILER_H */