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

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

#if defined(IOPRIO_CLASS_NONE) || (defined(HAVE_DECL_IOPRIO_CLASS_NONE) && HAVE_DECL_IOPRIO_CLASS_NONE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IOPRIO_CLASS_NONE) == (0), "IOPRIO_CLASS_NONE != 0");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IOPRIO_CLASS_NONE 0
#endif
#if defined(IOPRIO_CLASS_RT) || (defined(HAVE_DECL_IOPRIO_CLASS_RT) && HAVE_DECL_IOPRIO_CLASS_RT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IOPRIO_CLASS_RT) == (1), "IOPRIO_CLASS_RT != 1");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IOPRIO_CLASS_RT 1
#endif
#if defined(IOPRIO_CLASS_BE) || (defined(HAVE_DECL_IOPRIO_CLASS_BE) && HAVE_DECL_IOPRIO_CLASS_BE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IOPRIO_CLASS_BE) == (2), "IOPRIO_CLASS_BE != 2");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IOPRIO_CLASS_BE 2
#endif
#if defined(IOPRIO_CLASS_IDLE) || (defined(HAVE_DECL_IOPRIO_CLASS_IDLE) && HAVE_DECL_IOPRIO_CLASS_IDLE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IOPRIO_CLASS_IDLE) == (3), "IOPRIO_CLASS_IDLE != 3");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IOPRIO_CLASS_IDLE 3
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat ioprio_class in mpers mode

# else

static
const struct xlat ioprio_class[] = {
 XLAT(IOPRIO_CLASS_NONE),
 XLAT(IOPRIO_CLASS_RT),
 XLAT(IOPRIO_CLASS_BE),
 XLAT(IOPRIO_CLASS_IDLE),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
