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

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

#if defined(EFD_SEMAPHORE) || (defined(HAVE_DECL_EFD_SEMAPHORE) && HAVE_DECL_EFD_SEMAPHORE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((EFD_SEMAPHORE) == (1), "EFD_SEMAPHORE != 1");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define EFD_SEMAPHORE 1
#endif
#if defined EFD_CLOEXEC || defined O_CLOEXEC
#if defined(EFD_CLOEXEC) || (defined(HAVE_DECL_EFD_CLOEXEC) && HAVE_DECL_EFD_CLOEXEC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((EFD_CLOEXEC) == (O_CLOEXEC), "EFD_CLOEXEC != O_CLOEXEC");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define EFD_CLOEXEC O_CLOEXEC
#endif
#endif
#if defined(EFD_NONBLOCK) || (defined(HAVE_DECL_EFD_NONBLOCK) && HAVE_DECL_EFD_NONBLOCK)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((EFD_NONBLOCK) == (O_NONBLOCK), "EFD_NONBLOCK != O_NONBLOCK");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define EFD_NONBLOCK O_NONBLOCK
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat efd_flags in mpers mode

# else

static
const struct xlat efd_flags[] = {
 XLAT(EFD_SEMAPHORE),
#if defined EFD_CLOEXEC || defined O_CLOEXEC
 XLAT(EFD_CLOEXEC),
#endif
 XLAT(EFD_NONBLOCK),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
