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

#ifdef IN_MPERS

# error static const struct xlat sysctl_vm in mpers mode

#else

static
const struct xlat sysctl_vm[] = {
#if defined(VM_OVERCOMMIT_MEMORY) || (defined(HAVE_DECL_VM_OVERCOMMIT_MEMORY) && HAVE_DECL_VM_OVERCOMMIT_MEMORY)
  XLAT(VM_OVERCOMMIT_MEMORY),
#endif
#if defined(VM_PAGE_CLUSTER) || (defined(HAVE_DECL_VM_PAGE_CLUSTER) && HAVE_DECL_VM_PAGE_CLUSTER)
  XLAT(VM_PAGE_CLUSTER),
#endif
#if defined(VM_DIRTY_BACKGROUND) || (defined(HAVE_DECL_VM_DIRTY_BACKGROUND) && HAVE_DECL_VM_DIRTY_BACKGROUND)
  XLAT(VM_DIRTY_BACKGROUND),
#endif
#if defined(VM_DIRTY_RATIO) || (defined(HAVE_DECL_VM_DIRTY_RATIO) && HAVE_DECL_VM_DIRTY_RATIO)
  XLAT(VM_DIRTY_RATIO),
#endif
#if defined(VM_DIRTY_WB_CS) || (defined(HAVE_DECL_VM_DIRTY_WB_CS) && HAVE_DECL_VM_DIRTY_WB_CS)
  XLAT(VM_DIRTY_WB_CS),
#endif
#if defined(VM_DIRTY_EXPIRE_CS) || (defined(HAVE_DECL_VM_DIRTY_EXPIRE_CS) && HAVE_DECL_VM_DIRTY_EXPIRE_CS)
  XLAT(VM_DIRTY_EXPIRE_CS),
#endif
#if defined(VM_NR_PDFLUSH_THREADS) || (defined(HAVE_DECL_VM_NR_PDFLUSH_THREADS) && HAVE_DECL_VM_NR_PDFLUSH_THREADS)
  XLAT(VM_NR_PDFLUSH_THREADS),
#endif
#if defined(VM_OVERCOMMIT_RATIO) || (defined(HAVE_DECL_VM_OVERCOMMIT_RATIO) && HAVE_DECL_VM_OVERCOMMIT_RATIO)
  XLAT(VM_OVERCOMMIT_RATIO),
#endif
#if defined(VM_PAGEBUF) || (defined(HAVE_DECL_VM_PAGEBUF) && HAVE_DECL_VM_PAGEBUF)
  XLAT(VM_PAGEBUF),
#endif
#if defined(VM_HUGETLB_PAGES) || (defined(HAVE_DECL_VM_HUGETLB_PAGES) && HAVE_DECL_VM_HUGETLB_PAGES)
  XLAT(VM_HUGETLB_PAGES),
#endif
#if defined(VM_SWAPPINESS) || (defined(HAVE_DECL_VM_SWAPPINESS) && HAVE_DECL_VM_SWAPPINESS)
  XLAT(VM_SWAPPINESS),
#endif
#if defined(VM_LOWMEM_RESERVE_RATIO) || (defined(HAVE_DECL_VM_LOWMEM_RESERVE_RATIO) && HAVE_DECL_VM_LOWMEM_RESERVE_RATIO)
  XLAT(VM_LOWMEM_RESERVE_RATIO),
#endif
#if defined(VM_MIN_FREE_KBYTES) || (defined(HAVE_DECL_VM_MIN_FREE_KBYTES) && HAVE_DECL_VM_MIN_FREE_KBYTES)
  XLAT(VM_MIN_FREE_KBYTES),
#endif
#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 */
