xref: /aosp_15_r20/external/e2fsprogs/lib/ext2fs/compiler.h (revision 6a54128f25917bfc36a8a6e9d722c04a0b4641b6)
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 */
27