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

#ifdef IN_MPERS

# error static const struct xlat unix_diag_show in mpers mode

#else

static
const struct xlat unix_diag_show[] = {
#if defined(UDIAG_SHOW_NAME) || (defined(HAVE_DECL_UDIAG_SHOW_NAME) && HAVE_DECL_UDIAG_SHOW_NAME)
  XLAT(UDIAG_SHOW_NAME),
#endif
#if defined(UDIAG_SHOW_VFS) || (defined(HAVE_DECL_UDIAG_SHOW_VFS) && HAVE_DECL_UDIAG_SHOW_VFS)
  XLAT(UDIAG_SHOW_VFS),
#endif
#if defined(UDIAG_SHOW_PEER) || (defined(HAVE_DECL_UDIAG_SHOW_PEER) && HAVE_DECL_UDIAG_SHOW_PEER)
  XLAT(UDIAG_SHOW_PEER),
#endif
#if defined(UDIAG_SHOW_ICONS) || (defined(HAVE_DECL_UDIAG_SHOW_ICONS) && HAVE_DECL_UDIAG_SHOW_ICONS)
  XLAT(UDIAG_SHOW_ICONS),
#endif
#if defined(UDIAG_SHOW_RQLEN) || (defined(HAVE_DECL_UDIAG_SHOW_RQLEN) && HAVE_DECL_UDIAG_SHOW_RQLEN)
  XLAT(UDIAG_SHOW_RQLEN),
#endif
#if defined(UDIAG_SHOW_MEMINFO) || (defined(HAVE_DECL_UDIAG_SHOW_MEMINFO) && HAVE_DECL_UDIAG_SHOW_MEMINFO)
  XLAT(UDIAG_SHOW_MEMINFO),
#endif
 XLAT_END
};

#endif /* !IN_MPERS */
