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

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

#if defined(MPOL_F_NODE) || (defined(HAVE_DECL_MPOL_F_NODE) && HAVE_DECL_MPOL_F_NODE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MPOL_F_NODE) == (1), "MPOL_F_NODE != 1");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MPOL_F_NODE 1
#endif
#if defined(MPOL_F_ADDR) || (defined(HAVE_DECL_MPOL_F_ADDR) && HAVE_DECL_MPOL_F_ADDR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MPOL_F_ADDR) == (2), "MPOL_F_ADDR != 2");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MPOL_F_ADDR 2
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat mempolicyflags in mpers mode

# else

static
const struct xlat mempolicyflags[] = {
 XLAT(MPOL_F_NODE),
 XLAT(MPOL_F_ADDR),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
