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