1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _LINUX_STDDEF_H
3 #define _LINUX_STDDEF_H
4 
5 #include <uapi/linux/stddef.h>
6 
7 #undef NULL
8 #define NULL ((void *)0)
9 
10 enum {
11 	false	= 0,
12 	true	= 1
13 };
14 
15 #undef offsetof
16 #ifdef __compiler_offsetof
17 #define offsetof(TYPE, MEMBER)	__compiler_offsetof(TYPE, MEMBER)
18 #else
19 #define offsetof(TYPE, MEMBER)	((size_t)&((TYPE *)0)->MEMBER)
20 #endif
21 
22 /**
23  * sizeof_field(TYPE, MEMBER)
24  *
25  * @TYPE: The structure containing the field of interest
26  * @MEMBER: The field to return the size of
27  */
28 #define sizeof_field(TYPE, MEMBER) sizeof((((TYPE *)0)->MEMBER))
29 
30 /**
31  * offsetofend(TYPE, MEMBER)
32  *
33  * @TYPE: The type of the structure
34  * @MEMBER: The member within the structure to get the end offset of
35  */
36 #define offsetofend(TYPE, MEMBER) \
37 	(offsetof(TYPE, MEMBER)	+ sizeof_field(TYPE, MEMBER))
38 
39 #endif
40