/* Generated by ./xlat/gen.sh from ./xlat/usagewho.in; do not edit. */
#if !(defined(RUSAGE_SELF) || (defined(HAVE_DECL_RUSAGE_SELF) && HAVE_DECL_RUSAGE_SELF))
# define RUSAGE_SELF 0
#endif
#if !(defined(RUSAGE_CHILDREN) || (defined(HAVE_DECL_RUSAGE_CHILDREN) && HAVE_DECL_RUSAGE_CHILDREN))
# define RUSAGE_CHILDREN (-1)
#endif
#if !(defined(RUSAGE_BOTH) || (defined(HAVE_DECL_RUSAGE_BOTH) && HAVE_DECL_RUSAGE_BOTH))
# define RUSAGE_BOTH (-2)
#endif
#if !(defined(RUSAGE_THREAD) || (defined(HAVE_DECL_RUSAGE_THREAD) && HAVE_DECL_RUSAGE_THREAD))
# define RUSAGE_THREAD 1
#endif

#ifdef IN_MPERS

# error static const struct xlat usagewho in mpers mode

#else

static
const struct xlat usagewho[] = {
 XLAT(RUSAGE_SELF),
 XLAT(RUSAGE_CHILDREN),
 XLAT(RUSAGE_BOTH),
 XLAT(RUSAGE_THREAD),
 XLAT_END
};

#endif /* !IN_MPERS */
