#ifndef _SYS_CDEFS_H_
#define _SYS_CDEFS_H_
#ifndef __has_attribute
#define __has_attribute(x) 0
#endif
#ifndef __has_extension
#define __has_extension __has_feature
#endif
#ifndef __has_feature
#define __has_feature(x) 0
#endif
#ifndef __has_include
#define __has_include(x) 0
#endif
#ifndef __has_builtin
#define __has_builtin(x) 0
#endif
#if defined(__GNUC__)
#define __GNUC_PREREQ__(ma, mi) \
(__GNUC__ > (ma) || __GNUC__ == (ma) && __GNUC_MINOR__ >= (mi))
#else
#define __GNUC_PREREQ__(ma, mi) 0
#endif
#if defined(__cplusplus)
#define __BEGIN_EXTERN_C extern "C" {
#define __END_EXTERN_C }
#else
#define __BEGIN_DECLS
#define __END_DECLS
#define __BEGIN_EXTERN_C
#define __END_EXTERN_C
#endif
#if __GNUC_PREREQ__(4, 0)
#define __dso_public __attribute__((__visibility__("default")))
#define __dso_hidden __attribute__((__visibility__("hidden")))
#define __BEGIN_PUBLIC_DECLS \
_Pragma("GCC visibility push(default)") __BEGIN_EXTERN_C
#define __END_PUBLIC_DECLS \
__END_EXTERN_C _Pragma("GCC visibility pop")
#define __BEGIN_HIDDEN_DECLS \
_Pragma("GCC visibility push(hidden)") __BEGIN_EXTERN_C
#define __END_HIDDEN_DECLS \
__END_EXTERN_C _Pragma("GCC visibility pop")
#else
#define __dso_public
#define __dso_hidden
#define __BEGIN_PUBLIC_DECLS \
__BEGIN_EXTERN_C
#define __END_PUBLIC_DECLS \
__END_EXTERN_C
#define __BEGIN_HIDDEN_DECLS \
__BEGIN_EXTERN_C
#define __END_HIDDEN_DECLS \
__END_EXTERN_C
#endif
#if defined(__cplusplus)
#define __BEGIN_DECLS __BEGIN_PUBLIC_DECLS
#define __END_DECLS __END_PUBLIC_DECLS
#endif
#define __VM_CACHELINE_SIZE 64
#define __VM_CACHELINE_MASK (__VM_CACHELINE_SIZE - 1)
#define __VM_CACHELINE_ALIGN(n) \
(((n) + __VM_CACHELINE_MASK) & ~__VM_CACHELINE_MASK)
#if defined(__STDC__) || defined(__cplusplus)
#define __P(protos) protos
#define __CONCAT1(x,y) x ## y
#define __CONCAT(x,y) __CONCAT1(x,y)
#define __STRING(x) #x
#define __XSTRING(x) __STRING(x)
#define __const const
#define __signed signed
#define __volatile volatile
#if defined(__cplusplus)
#define __inline inline
#else
#ifndef __GNUC__
#define __inline
#endif
#endif
#else
#define __P(protos) ()
#define __CONCAT(x,y) xy
#define __STRING(x) "x"
#ifndef __GNUC__
#define __const
#define __inline
#define __signed
#define __volatile
#ifndef NO_ANSI_KEYWORDS
#define const
#define inline
#define signed
#define volatile
#endif
#endif
#endif
#define __weak_symbol __attribute__((__weak__))
#if __GNUC_PREREQ__(2, 7)
#define __dead2 __attribute__((__noreturn__))
#define __pure2 __attribute__((__const__))
#define __unused __attribute__((__unused__))
#define __packed __attribute__((__packed__))
#define __aligned(x) __attribute__((__aligned__(x)))
#define __section(x) __attribute__((__section__(x)))
#else
#define __dead2
#define __pure2
#define __unused
#endif
#if __GNUC_PREREQ__(2, 96)
#define __malloclike __attribute__((__malloc__))
#define __pure __attribute__((__pure__))
#else
#define __malloclike
#define __pure __pure2
#endif
#if __GNUC_PREREQ__(3, 1)
#define __always_inline __inline __attribute__((__always_inline__))
#define __noinline __attribute__((__noinline__))
#else
#define __always_inline
#define __noinline
#endif
#if __GNUC_PREREQ__(3, 3)
#define __nonnull(...) __attribute__((__nonnull__(__VA_ARGS__)))
#define __used __attribute__((__used__))
#else
#define __nonnull(...)
#define __used __unused
#endif
#if __GNUC_PREREQ__(3, 4)
#define __heedresult __attribute__((__warn_unused_result__))
#else
#define __heedresult
#endif
#if __GNUC_PREREQ__(4, 1)
#define __returns_twice __attribute__((__returns_twice__))
#else
#define __returns_twice
#endif
#if __GNUC_PREREQ__(4, 6) || __has_builtin(__builtin_unreachable)
#define __unreachable() __builtin_unreachable()
#else
#define __unreachable() ((void)0)
#endif
#if __GNUC_PREREQ__(4, 3) || __has_attribute(__alloc_size__)
#define __alloc_size(x) __attribute__((__alloc_size__(x)))
#define __alloc_size2(n, x) __attribute__((__alloc_size__(n, x)))
#else
#define __alloc_size(x)
#define __alloc_size2(n, x)
#endif
#if __GNUC_PREREQ__(4, 9) || __has_attribute(__alloc_align__)
#define __alloc_align(x) __attribute__((__alloc_align__(x)))
#else
#define __alloc_align(x)
#endif
#if !__GNUC_PREREQ__(2, 7) && __STDC_VERSION__ < 199901
#define __func__ NULL
#endif
#if (__GNUC_PREREQ__(2, 0) && !defined(__STRICT_ANSI__)) || \
__STDC_VERSION__ >= 199901
#define __LONG_LONG_SUPPORTED
#endif
#if defined(__cplusplus) && __cplusplus >= 201103L
#define __LONG_LONG_SUPPORTED
#ifndef __STDC_LIMIT_MACROS
#define __STDC_LIMIT_MACROS
#endif
#ifndef __STDC_CONSTANT_MACROS
#define __STDC_CONSTANT_MACROS
#endif
#endif
#if !__GNUC_PREREQ__(2, 95)
#if __STDC_VERSION__ < 199901
#define __restrict
#else
#define __restrict restrict
#endif
#endif
#if __GNUC_PREREQ__(3, 1) && !defined(__GNUG__)
#define __restrict_arr __restrict
#else
#ifdef __GNUC__
#define __restrict_arr
#else
#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901
#define __restrict_arr restrict
#else
#define __restrict_arr
#endif
#endif
#endif
#if !defined(__cplusplus) && \
(defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901)
#define __min_size(x) static (x)
#else
#define __min_size(x) (x)
#endif
#if __GNUC_PREREQ__(2, 96)
#define __predict_true(exp) __builtin_expect((exp), 1)
#define __predict_false(exp) __builtin_expect((exp), 0)
#else
#define __predict_true(exp) (exp)
#define __predict_false(exp) (exp)
#endif
#if __GNUC_PREREQ__(4, 1)
#define __offsetof(type, field) __builtin_offsetof(type, field)
#else
#ifndef __cplusplus
#define __offsetof(type, field) \
((__size_t)(__uintptr_t)((const volatile void *)&((type *)0)->field))
#else
#define __offsetof(type, field) \
(__offsetof__ (reinterpret_cast <__size_t> \
(&reinterpret_cast <const volatile char &> \
(static_cast<type *> (0)->field))))
#endif
#endif
#if __GNUC_PREREQ__(3, 1)
#define __containerof(x, s, m) ({ \
const volatile __typeof(((s *)NULL)->m) *__x = (x); \
__DEQUALIFY(s *, (const volatile char *)__x - __offsetof(s, m)); \
})
#else
#define __containerof(x, s, m) \
__DEQUALIFY(s *, (const volatile char *)(x) - __offsetof(s, m))
#endif
#if !__GNUC_PREREQ__(2, 7)
#define __printflike(fmtarg, firstvararg)
#define __scanflike(fmtarg, firstvararg)
#define __printf0like(fmtarg, firstvararg)
#define __format_arg(fmtarg)
#define __strfmonlike(fmtarg, firstvararg)
#define __strftimelike(fmtarg, firstvararg)
#elif __GNUC_PREREQ__(3, 0)
#define __printflike(fmtarg, firstvararg) \
__attribute__((__nonnull__(fmtarg), \
__format__ (__printf__, fmtarg, firstvararg)))
#define __printf0like(fmtarg, firstvararg) \
__attribute__((__format__ (__printf__, fmtarg, firstvararg)))
#define __scanflike(fmtarg, firstvararg) \
__attribute__((__format__ (__scanf__, fmtarg, firstvararg)))
#define __format_arg(fmtarg) \
__attribute__((__format_arg__ (fmtarg)))
#define __strfmonlike(fmtarg, firstvararg) \
__attribute__((__format__ (__strfmon__, fmtarg, firstvararg)))
#define __strftimelike(fmtarg, firstvararg) \
__attribute__((__format__ (__strftime__, fmtarg, firstvararg)))
#else
#define __printflike(fmtarg, firstvararg) \
__attribute__((__format__ (__printf__, fmtarg, firstvararg)))
#define __printf0like(fmtarg, firstvararg) \
__attribute__((__format__ (__printf0__, fmtarg, firstvararg)))
#define __scanflike(fmtarg, firstvararg) \
__attribute__((__format__ (__scanf__, fmtarg, firstvararg)))
#define __format_arg(fmtarg) \
__attribute__((__format_arg__ (fmtarg)))
#define __strfmonlike(fmtarg, firstvararg) \
__attribute__((__format__ (__strfmon__, fmtarg, firstvararg)))
#define __strftimelike(fmtarg, firstvararg) \
__attribute__((__format__ (__strftime__, fmtarg, firstvararg)))
#endif
#if !__GNUC_PREREQ__(3, 0)
#define __ARRAY_ZERO 0
#else
#define __ARRAY_ZERO
#endif
#if __GNUC_PREREQ__(4, 3)
#define __constructor(prio) __attribute__((constructor(prio)))
#else
#define __constructor(prio) __attribute__((constructor))
#endif
#ifdef __GNUC__
#define __cachealign __attribute__((__aligned__(__VM_CACHELINE_SIZE)))
#define __usereg __attribute__((__regparm__(3)))
#else
#define __cachealign
#define __usereg
#endif
#if __GNUC_PREREQ__(9, 1) || __has_attribute(__copy__)
#define __copy_attr(symbol) __attribute__((__copy__(symbol)))
#else
#define __copy_attr(symbol)
#endif
#ifdef __GNUC__
#define __strong_reference(sym,aliassym) \
extern __typeof (sym) aliassym \
__copy_attr(sym) __attribute__((__alias__(#sym)))
#define __weak_reference(sym,aliassym) \
__strong_reference(sym,aliassym) __attribute__((__weak__))
#define __weak_reference_asm(sym,alias) \
__asm__(".weak " #alias); \
__asm__(".equ " #alias ", " #sym)
#define __warn_references(sym,msg) \
__asm__(".section .gnu.warning." #sym); \
__asm__(".asciz \"" msg "\""); \
__asm__(".previous")
#define __sym_compat(sym,impl,verid) \
__asm__(".symver " #impl ", " #sym "@" #verid)
#define __sym_default(sym,impl,verid) \
__asm__(".symver " #impl ", " #sym "@@@" #verid)
#endif
#if defined(__GNUC__)
#define __IDSTRING(name,string) __asm__(".ident\t\"" string "\"")
#endif
#ifndef __RCSID
#define __RCSID(s) struct __hack
#endif
#ifndef __RCSID_SOURCE
#define __RCSID_SOURCE(s) struct __hack
#endif
#ifndef __SCCSID
#define __SCCSID(s) struct __hack
#endif
#ifndef __FBSDID
#define __FBSDID(s) struct __hack
#endif
#ifndef __COPYRIGHT
#define __COPYRIGHT(s) struct __hack
#endif
#ifndef __DECONST
#define __DECONST(type, var) ((type)(__uintptr_t)(const void *)(var))
#endif
#ifndef __DEVOLATILE
#define __DEVOLATILE(type, var) ((type)(__uintptr_t)(volatile void *)(var))
#endif
#ifndef __DEQUALIFY
#define __DEQUALIFY(type, var) ((type)(__uintptr_t)(const volatile void *)(var))
#endif
#if !__GNUC_PREREQ__(2, 95)
#define __alignof(x) __offsetof(struct { char __a; x __b; }, __b)
#endif
#if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 201112L
#if !__has_extension(c_alignas)
#if (defined(__cplusplus) && __cplusplus >= 201103L) || \
__has_extension(cxx_alignas)
#define _Alignas(x) alignas(x)
#else
#define _Alignas(x) __aligned(x)
#endif
#endif
#if defined(__cplusplus) && __cplusplus >= 201103L
#define _Alignof(x) alignof(x)
#else
#define _Alignof(x) __alignof(x)
#endif
#if !defined(_Noreturn)
#define _Noreturn __dead2
#endif
#if !__has_extension(c_static_assert)
#if (defined(__cplusplus) && __cplusplus >= 201103L) || \
__has_extension(cxx_static_assert)
#define _Static_assert(x, y) static_assert(x, y)
#elif !__GNUC_PREREQ__(4, 6)
#define _Static_assert(x, y) struct __hack
#ifdef _KERNEL
#define CTASSERT(x) _CTASSERT(x, __LINE__)
#define _CTASSERT(x, y) __CTASSERT(x, y)
#define __CTASSERT(x, y) typedef char __assert ## y[(x) ? 1 : -1]
#endif
#endif
#if !__has_extension(c_thread_local)
#if (defined(__cplusplus) && __cplusplus >= 201103L && __GNUC_PREREQ__(4, 8)) || \
__has_extension(cxx_thread_local)
#define _Thread_local thread_local
#else
#define _Thread_local __thread
#endif
#endif
#endif
#endif
#if defined(_KERNEL) && !defined(CTASSERT)
#define CTASSERT(x) _Static_assert(x, \
"compile-time assertion failed")
#endif
#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
#define __generic(expr, t, yes, no) \
_Generic(expr, t: yes, default: no)
#elif __GNUC_PREREQ__(3, 1) && !defined(__cplusplus)
#define __generic(expr, t, yes, no) \
__builtin_choose_expr( \
__builtin_types_compatible_p(__typeof(expr), t), yes, no)
#endif
#if defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE - 0) == 1
#undef _POSIX_C_SOURCE
#define _POSIX_C_SOURCE 199009
#endif
#if defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE - 0) == 2
#undef _POSIX_C_SOURCE
#define _POSIX_C_SOURCE 199209
#endif
#ifdef _XOPEN_SOURCE
#if _XOPEN_SOURCE - 0 >= 700
#define __XSI_VISIBLE 700
#undef _POSIX_C_SOURCE
#define _POSIX_C_SOURCE 200809
#elif _XOPEN_SOURCE - 0 >= 600
#define __XSI_VISIBLE 600
#undef _POSIX_C_SOURCE
#define _POSIX_C_SOURCE 200112
#elif _XOPEN_SOURCE - 0 >= 500
#define __XSI_VISIBLE 500
#undef _POSIX_C_SOURCE
#define _POSIX_C_SOURCE 199506
#endif
#endif
#if defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE)
#define _POSIX_C_SOURCE 198808
#endif
#ifdef _POSIX_C_SOURCE
#if (_POSIX_C_SOURCE - 0) >= 200809
#define __POSIX_VISIBLE 200809
#define __ISO_C_VISIBLE 1999
#elif (_POSIX_C_SOURCE - 0) >= 200112
#define __POSIX_VISIBLE 200112
#define __ISO_C_VISIBLE 1999
#elif (_POSIX_C_SOURCE - 0) >= 199506
#define __POSIX_VISIBLE 199506
#define __ISO_C_VISIBLE 1990
#elif (_POSIX_C_SOURCE - 0) >= 199309
#define __POSIX_VISIBLE 199309
#define __ISO_C_VISIBLE 1990
#elif (_POSIX_C_SOURCE - 0) >= 199209
#define __POSIX_VISIBLE 199209
#define __ISO_C_VISIBLE 1990
#elif (_POSIX_C_SOURCE - 0) >= 199009
#define __POSIX_VISIBLE 199009
#define __ISO_C_VISIBLE 1990
#else
#define __POSIX_VISIBLE 198808
#define __ISO_C_VISIBLE 0
#endif
#else
#if defined(_ANSI_SOURCE)
#define __POSIX_VISIBLE 0
#define __XSI_VISIBLE 0
#define __BSD_VISIBLE 0
#define __ISO_C_VISIBLE 1990
#define __EXT1_VISIBLE 0
#elif defined(_C99_SOURCE)
#define __POSIX_VISIBLE 0
#define __XSI_VISIBLE 0
#define __BSD_VISIBLE 0
#define __ISO_C_VISIBLE 1999
#define __EXT1_VISIBLE 0
#elif defined(_C11_SOURCE)
#define __POSIX_VISIBLE 0
#define __XSI_VISIBLE 0
#define __BSD_VISIBLE 0
#define __ISO_C_VISIBLE 2011
#define __EXT1_VISIBLE 0
#else
#define __POSIX_VISIBLE 200809
#define __XSI_VISIBLE 700
#define __BSD_VISIBLE 1
#define __ISO_C_VISIBLE 2011
#define __EXT1_VISIBLE 1
#endif
#endif
#if defined(__STDC_WANT_LIB_EXT1__)
#undef __EXT1_VISIBLE
#if __STDC_WANT_LIB_EXT1__
#define __EXT1_VISIBLE 1
#else
#define __EXT1_VISIBLE 0
#endif
#endif
#ifndef __BSD_VISIBLE
#define __BSD_VISIBLE 0
#endif
#ifndef __EXT1_VISIBLE
#define __EXT1_VISIBLE 0
#endif
#define __GLOBL1(sym) __asm__(".globl " #sym)
#define __GLOBL(sym) __GLOBL1(sym)
#endif