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