1*6a54128fSAndroid Build Coastguard Worker #ifndef _EXT2FS_COMPILER_H 2*6a54128fSAndroid Build Coastguard Worker #define _EXT2FS_COMPILER_H 3*6a54128fSAndroid Build Coastguard Worker 4*6a54128fSAndroid Build Coastguard Worker #include <stddef.h> 5*6a54128fSAndroid Build Coastguard Worker 6*6a54128fSAndroid Build Coastguard Worker #ifdef __GNUC__ 7*6a54128fSAndroid Build Coastguard Worker 8*6a54128fSAndroid Build Coastguard Worker #ifndef __GNUC_PREREQ 9*6a54128fSAndroid Build Coastguard Worker #if defined(__GNUC__) && defined(__GNUC_MINOR__) 10*6a54128fSAndroid Build Coastguard Worker #define __GNUC_PREREQ(maj, min) \ 11*6a54128fSAndroid Build Coastguard Worker ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) 12*6a54128fSAndroid Build Coastguard Worker #else 13*6a54128fSAndroid Build Coastguard Worker #define __GNUC_PREREQ(maj, min) 0 14*6a54128fSAndroid Build Coastguard Worker #endif 15*6a54128fSAndroid Build Coastguard Worker #endif 16*6a54128fSAndroid Build Coastguard Worker 17*6a54128fSAndroid Build Coastguard Worker #define container_of(ptr, type, member) ({ \ 18*6a54128fSAndroid Build Coastguard Worker __typeof__( ((type *)0)->member ) *__mptr = (ptr); \ 19*6a54128fSAndroid Build Coastguard Worker (type *)( (char *)__mptr - offsetof(type,member) );}) 20*6a54128fSAndroid Build Coastguard Worker #else 21*6a54128fSAndroid Build Coastguard Worker #define container_of(ptr, type, member) \ 22*6a54128fSAndroid Build Coastguard Worker ((type *)((char *)(ptr) - offsetof(type, member))) 23*6a54128fSAndroid Build Coastguard Worker #endif 24*6a54128fSAndroid Build Coastguard Worker 25*6a54128fSAndroid Build Coastguard Worker 26*6a54128fSAndroid Build Coastguard Worker #endif /* _EXT2FS_COMPILER_H */ 27