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

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


#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat sysctl_kern in mpers mode

# else

static
const struct xlat sysctl_kern[] = {
 XLAT(KERN_OSTYPE),
 XLAT(KERN_OSRELEASE),
 XLAT(KERN_OSREV),
 XLAT(KERN_VERSION),
 XLAT(KERN_SECUREMASK),
 XLAT(KERN_PROF),
 XLAT(KERN_NODENAME),
 XLAT(KERN_DOMAINNAME),
 XLAT(KERN_PANIC),
 XLAT(KERN_REALROOTDEV),
 XLAT(KERN_SPARC_REBOOT),
 XLAT(KERN_CTLALTDEL),
 XLAT(KERN_PRINTK),
 XLAT(KERN_NAMETRANS),
 XLAT(KERN_PPC_HTABRECLAIM),
 XLAT(KERN_PPC_ZEROPAGED),
 XLAT(KERN_PPC_POWERSAVE_NAP),
 XLAT(KERN_MODPROBE),
 XLAT(KERN_SG_BIG_BUFF),
 XLAT(KERN_ACCT),
 XLAT(KERN_PPC_L2CR),
 XLAT(KERN_RTSIGNR),
 XLAT(KERN_RTSIGMAX),
 XLAT(KERN_SHMMAX),
 XLAT(KERN_MSGMAX),
 XLAT(KERN_MSGMNB),
 XLAT(KERN_MSGPOOL),
 XLAT(KERN_SYSRQ),
 XLAT(KERN_MAX_THREADS),
 XLAT(KERN_RANDOM),
 XLAT(KERN_SHMALL),
 XLAT(KERN_MSGMNI),
 XLAT(KERN_SEM),
 XLAT(KERN_SPARC_STOP_A),
 XLAT(KERN_SHMMNI),
 XLAT(KERN_OVERFLOWUID),
 XLAT(KERN_OVERFLOWGID),
 XLAT(KERN_SHMPATH),
 XLAT(KERN_HOTPLUG),
 XLAT(KERN_IEEE_EMULATION_WARNINGS),
 XLAT(KERN_S390_USER_DEBUG_LOGGING),
 XLAT(KERN_CORE_USES_PID),
 XLAT(KERN_TAINTED),
 XLAT(KERN_CADPID),
 XLAT(KERN_PIDMAX),
 XLAT(KERN_CORE_PATTERN),
 XLAT(KERN_PANIC_ON_OOPS),
 XLAT(KERN_HPPA_PWRSW),
 XLAT(KERN_HPPA_UNALIGNED),
#if defined(KERN_PRINTK_RATELIMIT) || (defined(HAVE_DECL_KERN_PRINTK_RATELIMIT) && HAVE_DECL_KERN_PRINTK_RATELIMIT)
  XLAT(KERN_PRINTK_RATELIMIT),
#endif
#if defined(KERN_PRINTK_RATELIMIT_BURST) || (defined(HAVE_DECL_KERN_PRINTK_RATELIMIT_BURST) && HAVE_DECL_KERN_PRINTK_RATELIMIT_BURST)
  XLAT(KERN_PRINTK_RATELIMIT_BURST),
#endif
#if defined(KERN_PTY) || (defined(HAVE_DECL_KERN_PTY) && HAVE_DECL_KERN_PTY)
  XLAT(KERN_PTY),
#endif
#if defined(KERN_NGROUPS_MAX) || (defined(HAVE_DECL_KERN_NGROUPS_MAX) && HAVE_DECL_KERN_NGROUPS_MAX)
  XLAT(KERN_NGROUPS_MAX),
#endif
#if defined(KERN_SPARC_SCONS_PWROFF) || (defined(HAVE_DECL_KERN_SPARC_SCONS_PWROFF) && HAVE_DECL_KERN_SPARC_SCONS_PWROFF)
  XLAT(KERN_SPARC_SCONS_PWROFF),
#endif
#if defined(KERN_HZ_TIMER) || (defined(HAVE_DECL_KERN_HZ_TIMER) && HAVE_DECL_KERN_HZ_TIMER)
  XLAT(KERN_HZ_TIMER),
#endif
#if defined(KERN_UNKNOWN_NMI_PANIC) || (defined(HAVE_DECL_KERN_UNKNOWN_NMI_PANIC) && HAVE_DECL_KERN_UNKNOWN_NMI_PANIC)
  XLAT(KERN_UNKNOWN_NMI_PANIC),
#endif
#if defined(KERN_BOOTLOADER_TYPE) || (defined(HAVE_DECL_KERN_BOOTLOADER_TYPE) && HAVE_DECL_KERN_BOOTLOADER_TYPE)
  XLAT(KERN_BOOTLOADER_TYPE),
#endif
#if defined(KERN_RANDOMIZE) || (defined(HAVE_DECL_KERN_RANDOMIZE) && HAVE_DECL_KERN_RANDOMIZE)
  XLAT(KERN_RANDOMIZE),
#endif
#if defined(KERN_SETUID_DUMPABLE) || (defined(HAVE_DECL_KERN_SETUID_DUMPABLE) && HAVE_DECL_KERN_SETUID_DUMPABLE)
  XLAT(KERN_SETUID_DUMPABLE),
#endif
#if defined(KERN_SPIN_RETRY) || (defined(HAVE_DECL_KERN_SPIN_RETRY) && HAVE_DECL_KERN_SPIN_RETRY)
  XLAT(KERN_SPIN_RETRY),
#endif
#if defined(KERN_ACPI_VIDEO_FLAGS) || (defined(HAVE_DECL_KERN_ACPI_VIDEO_FLAGS) && HAVE_DECL_KERN_ACPI_VIDEO_FLAGS)
  XLAT(KERN_ACPI_VIDEO_FLAGS),
#endif
#if defined(KERN_IA64_UNALIGNED) || (defined(HAVE_DECL_KERN_IA64_UNALIGNED) && HAVE_DECL_KERN_IA64_UNALIGNED)
  XLAT(KERN_IA64_UNALIGNED),
#endif
#if defined(KERN_COMPAT_LOG) || (defined(HAVE_DECL_KERN_COMPAT_LOG) && HAVE_DECL_KERN_COMPAT_LOG)
  XLAT(KERN_COMPAT_LOG),
#endif
#if defined(KERN_MAX_LOCK_DEPTH) || (defined(HAVE_DECL_KERN_MAX_LOCK_DEPTH) && HAVE_DECL_KERN_MAX_LOCK_DEPTH)
  XLAT(KERN_MAX_LOCK_DEPTH),
#endif
#if defined(KERN_NMI_WATCHDOG) || (defined(HAVE_DECL_KERN_NMI_WATCHDOG) && HAVE_DECL_KERN_NMI_WATCHDOG)
  XLAT(KERN_NMI_WATCHDOG),
#endif
#if defined(KERN_PANIC_ON_NMI) || (defined(HAVE_DECL_KERN_PANIC_ON_NMI) && HAVE_DECL_KERN_PANIC_ON_NMI)
  XLAT(KERN_PANIC_ON_NMI),
#endif
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
