linux/include/linux/stddef.h
<<
>>
Prefs
   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