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 10enum { 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