/* Generated by ./xlat/gen.sh from ./xlat/epollflags.in; do not edit. */

#include "gcc_compat.h"
#include "static_assert.h"

#if defined EPOLL_CLOEXEC || defined O_CLOEXEC
#if defined(EPOLL_CLOEXEC) || (defined(HAVE_DECL_EPOLL_CLOEXEC) && HAVE_DECL_EPOLL_CLOEXEC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((EPOLL_CLOEXEC) == (O_CLOEXEC), "EPOLL_CLOEXEC != O_CLOEXEC");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define EPOLL_CLOEXEC O_CLOEXEC
#endif
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat epollflags in mpers mode

# else

static
const struct xlat epollflags[] = {
#if defined EPOLL_CLOEXEC || defined O_CLOEXEC
 XLAT(EPOLL_CLOEXEC),
#endif
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
