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

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

#if defined(SECCOMP_RET_KILL_PROCESS) || (defined(HAVE_DECL_SECCOMP_RET_KILL_PROCESS) && HAVE_DECL_SECCOMP_RET_KILL_PROCESS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SECCOMP_RET_KILL_PROCESS) == (0x80000000U), "SECCOMP_RET_KILL_PROCESS != 0x80000000U");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SECCOMP_RET_KILL_PROCESS 0x80000000U
#endif
#if defined(SECCOMP_RET_KILL_THREAD) || (defined(HAVE_DECL_SECCOMP_RET_KILL_THREAD) && HAVE_DECL_SECCOMP_RET_KILL_THREAD)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SECCOMP_RET_KILL_THREAD) == (0), "SECCOMP_RET_KILL_THREAD != 0");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SECCOMP_RET_KILL_THREAD 0
#endif
#if defined(SECCOMP_RET_TRAP) || (defined(HAVE_DECL_SECCOMP_RET_TRAP) && HAVE_DECL_SECCOMP_RET_TRAP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SECCOMP_RET_TRAP) == (0x00030000U), "SECCOMP_RET_TRAP != 0x00030000U");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SECCOMP_RET_TRAP 0x00030000U
#endif
#if defined(SECCOMP_RET_ERRNO) || (defined(HAVE_DECL_SECCOMP_RET_ERRNO) && HAVE_DECL_SECCOMP_RET_ERRNO)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SECCOMP_RET_ERRNO) == (0x00050000U), "SECCOMP_RET_ERRNO != 0x00050000U");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SECCOMP_RET_ERRNO 0x00050000U
#endif
#if defined(SECCOMP_RET_TRACE) || (defined(HAVE_DECL_SECCOMP_RET_TRACE) && HAVE_DECL_SECCOMP_RET_TRACE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SECCOMP_RET_TRACE) == (0x7ff00000U), "SECCOMP_RET_TRACE != 0x7ff00000U");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SECCOMP_RET_TRACE 0x7ff00000U
#endif
#if defined(SECCOMP_RET_LOG) || (defined(HAVE_DECL_SECCOMP_RET_LOG) && HAVE_DECL_SECCOMP_RET_LOG)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SECCOMP_RET_LOG) == (0x7ffc0000U), "SECCOMP_RET_LOG != 0x7ffc0000U");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SECCOMP_RET_LOG 0x7ffc0000U
#endif
#if defined(SECCOMP_RET_ALLOW) || (defined(HAVE_DECL_SECCOMP_RET_ALLOW) && HAVE_DECL_SECCOMP_RET_ALLOW)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SECCOMP_RET_ALLOW) == (0x7fff0000U), "SECCOMP_RET_ALLOW != 0x7fff0000U");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SECCOMP_RET_ALLOW 0x7fff0000U
#endif

#ifndef XLAT_MACROS_ONLY

# ifndef IN_MPERS

const struct xlat seccomp_ret_action[] = {
 XLAT(SECCOMP_RET_KILL_PROCESS),
 XLAT(SECCOMP_RET_KILL_THREAD),
 XLAT(SECCOMP_RET_TRAP),
 XLAT(SECCOMP_RET_ERRNO),
 XLAT(SECCOMP_RET_TRACE),
 XLAT(SECCOMP_RET_LOG),
 XLAT(SECCOMP_RET_ALLOW),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
