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

#ifdef IN_MPERS

# error static const struct xlat uffd_api_features in mpers mode

#else

static
const struct xlat uffd_api_features[] = {
#if defined(UFFD_FEATURE_PAGEFAULT_FLAG_WP) || (defined(HAVE_DECL_UFFD_FEATURE_PAGEFAULT_FLAG_WP) && HAVE_DECL_UFFD_FEATURE_PAGEFAULT_FLAG_WP)
  XLAT_TYPE(uint64_t, UFFD_FEATURE_PAGEFAULT_FLAG_WP),
#endif
#if defined(UFFD_FEATURE_EVENT_FORK) || (defined(HAVE_DECL_UFFD_FEATURE_EVENT_FORK) && HAVE_DECL_UFFD_FEATURE_EVENT_FORK)
  XLAT_TYPE(uint64_t, UFFD_FEATURE_EVENT_FORK),
#endif
#if defined(UFFD_FEATURE_EVENT_REMAP) || (defined(HAVE_DECL_UFFD_FEATURE_EVENT_REMAP) && HAVE_DECL_UFFD_FEATURE_EVENT_REMAP)
  XLAT_TYPE(uint64_t, UFFD_FEATURE_EVENT_REMAP),
#endif
#if defined(UFFD_FEATURE_EVENT_REMOVE) || (defined(HAVE_DECL_UFFD_FEATURE_EVENT_REMOVE) && HAVE_DECL_UFFD_FEATURE_EVENT_REMOVE)
  XLAT_TYPE(uint64_t, UFFD_FEATURE_EVENT_REMOVE),
#endif
#if defined(UFFD_FEATURE_MISSING_HUGETLBFS) || (defined(HAVE_DECL_UFFD_FEATURE_MISSING_HUGETLBFS) && HAVE_DECL_UFFD_FEATURE_MISSING_HUGETLBFS)
  XLAT_TYPE(uint64_t, UFFD_FEATURE_MISSING_HUGETLBFS),
#endif
#if defined(UFFD_FEATURE_MISSING_SHMEM) || (defined(HAVE_DECL_UFFD_FEATURE_MISSING_SHMEM) && HAVE_DECL_UFFD_FEATURE_MISSING_SHMEM)
  XLAT_TYPE(uint64_t, UFFD_FEATURE_MISSING_SHMEM),
#endif
#if defined(UFFD_FEATURE_EVENT_UNMAP) || (defined(HAVE_DECL_UFFD_FEATURE_EVENT_UNMAP) && HAVE_DECL_UFFD_FEATURE_EVENT_UNMAP)
  XLAT_TYPE(uint64_t, UFFD_FEATURE_EVENT_UNMAP),
#endif
#if defined(UFFD_FEATURE_SIGBUS) || (defined(HAVE_DECL_UFFD_FEATURE_SIGBUS) && HAVE_DECL_UFFD_FEATURE_SIGBUS)
  XLAT_TYPE(uint64_t, UFFD_FEATURE_SIGBUS),
#endif
#if defined(UFFD_FEATURE_THREAD_ID) || (defined(HAVE_DECL_UFFD_FEATURE_THREAD_ID) && HAVE_DECL_UFFD_FEATURE_THREAD_ID)
  XLAT_TYPE(uint64_t, UFFD_FEATURE_THREAD_ID),
#endif
 XLAT_END
};

#endif /* !IN_MPERS */
