/* Generated by ./xlat/gen.sh from ./xlat/sysctl_vm.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_vm in mpers mode

# else

static
const struct xlat sysctl_vm[] = {
 XLAT(VM_OVERCOMMIT_MEMORY),
 XLAT(VM_PAGE_CLUSTER),
 XLAT(VM_DIRTY_BACKGROUND),
 XLAT(VM_DIRTY_RATIO),
 XLAT(VM_DIRTY_WB_CS),
 XLAT(VM_DIRTY_EXPIRE_CS),
 XLAT(VM_NR_PDFLUSH_THREADS),
 XLAT(VM_OVERCOMMIT_RATIO),
 XLAT(VM_PAGEBUF),
 XLAT(VM_HUGETLB_PAGES),
 XLAT(VM_SWAPPINESS),
 XLAT(VM_LOWMEM_RESERVE_RATIO),
 XLAT(VM_MIN_FREE_KBYTES),
#if defined(VM_MAX_MAP_COUNT) || (defined(HAVE_DECL_VM_MAX_MAP_COUNT) && HAVE_DECL_VM_MAX_MAP_COUNT)
  XLAT(VM_MAX_MAP_COUNT),
#endif
#if defined(VM_LAPTOP_MODE) || (defined(HAVE_DECL_VM_LAPTOP_MODE) && HAVE_DECL_VM_LAPTOP_MODE)
  XLAT(VM_LAPTOP_MODE),
#endif
#if defined(VM_BLOCK_DUMP) || (defined(HAVE_DECL_VM_BLOCK_DUMP) && HAVE_DECL_VM_BLOCK_DUMP)
  XLAT(VM_BLOCK_DUMP),
#endif
#if defined(VM_HUGETLB_GROUP) || (defined(HAVE_DECL_VM_HUGETLB_GROUP) && HAVE_DECL_VM_HUGETLB_GROUP)
  XLAT(VM_HUGETLB_GROUP),
#endif
#if defined(VM_VFS_CACHE_PRESSURE) || (defined(HAVE_DECL_VM_VFS_CACHE_PRESSURE) && HAVE_DECL_VM_VFS_CACHE_PRESSURE)
  XLAT(VM_VFS_CACHE_PRESSURE),
#endif
#if defined(VM_LEGACY_VA_LAYOUT) || (defined(HAVE_DECL_VM_LEGACY_VA_LAYOUT) && HAVE_DECL_VM_LEGACY_VA_LAYOUT)
  XLAT(VM_LEGACY_VA_LAYOUT),
#endif
#if defined(VM_SWAP_TOKEN_TIMEOUT) || (defined(HAVE_DECL_VM_SWAP_TOKEN_TIMEOUT) && HAVE_DECL_VM_SWAP_TOKEN_TIMEOUT)
  XLAT(VM_SWAP_TOKEN_TIMEOUT),
#endif
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
