Print this page
3373 gcc >= 4.5 concerns about offsetof()


  27 #include <sys/debug.h>
  28 #include <sys/isa_defs.h>
  29 #include <sys/int_limits.h>
  30 #include <sys/nvpair.h>
  31 #include <sys/nvpair_impl.h>
  32 #include <rpc/types.h>
  33 #include <rpc/xdr.h>
  34 
  35 #if defined(_KERNEL) && !defined(_BOOT)
  36 #include <sys/varargs.h>
  37 #include <sys/ddi.h>
  38 #include <sys/sunddi.h>
  39 #else
  40 #include <stdarg.h>
  41 #include <stdlib.h>
  42 #include <string.h>
  43 #include <strings.h>
  44 #endif
  45 
  46 #ifndef offsetof



  47 #define offsetof(s, m)  ((size_t)(&(((s *)0)->m)))

  48 #endif
  49 #define skip_whitespace(p)      while ((*(p) == ' ') || (*(p) == '\t')) p++
  50 
  51 /*
  52  * nvpair.c - Provides kernel & userland interfaces for manipulating
  53  *      name-value pairs.
  54  *
  55  * Overview Diagram
  56  *
  57  *  +--------------+
  58  *  |  nvlist_t    |
  59  *  |--------------|
  60  *  | nvl_version  |
  61  *  | nvl_nvflag   |
  62  *  | nvl_priv    -+-+
  63  *  | nvl_flag     | |
  64  *  | nvl_pad      | |
  65  *  +--------------+ |
  66  *                   V
  67  *      +--------------+      last i_nvp in list




  27 #include <sys/debug.h>
  28 #include <sys/isa_defs.h>
  29 #include <sys/int_limits.h>
  30 #include <sys/nvpair.h>
  31 #include <sys/nvpair_impl.h>
  32 #include <rpc/types.h>
  33 #include <rpc/xdr.h>
  34 
  35 #if defined(_KERNEL) && !defined(_BOOT)
  36 #include <sys/varargs.h>
  37 #include <sys/ddi.h>
  38 #include <sys/sunddi.h>
  39 #else
  40 #include <stdarg.h>
  41 #include <stdlib.h>
  42 #include <string.h>
  43 #include <strings.h>
  44 #endif
  45 
  46 #ifndef offsetof
  47 #if defined(__GNUC__)
  48 #define offsetof(s, m)  __builtin_offsetof(s, m)
  49 #else
  50 #define offsetof(s, m)  ((size_t)(&(((s *)0)->m)))
  51 #endif
  52 #endif
  53 #define skip_whitespace(p)      while ((*(p) == ' ') || (*(p) == '\t')) p++
  54 
  55 /*
  56  * nvpair.c - Provides kernel & userland interfaces for manipulating
  57  *      name-value pairs.
  58  *
  59  * Overview Diagram
  60  *
  61  *  +--------------+
  62  *  |  nvlist_t    |
  63  *  |--------------|
  64  *  | nvl_version  |
  65  *  | nvl_nvflag   |
  66  *  | nvl_priv    -+-+
  67  *  | nvl_flag     | |
  68  *  | nvl_pad      | |
  69  *  +--------------+ |
  70  *                   V
  71  *      +--------------+      last i_nvp in list