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

static const struct xlat schedulers[] = {
#if defined(SCHED_OTHER) || (defined(HAVE_DECL_SCHED_OTHER) && HAVE_DECL_SCHED_OTHER)
 XLAT(SCHED_OTHER),
#endif
#if defined(SCHED_FIFO) || (defined(HAVE_DECL_SCHED_FIFO) && HAVE_DECL_SCHED_FIFO)
 XLAT(SCHED_FIFO),
#endif
#if defined(SCHED_RR) || (defined(HAVE_DECL_SCHED_RR) && HAVE_DECL_SCHED_RR)
 XLAT(SCHED_RR),
#endif
#if defined(SCHED_BATCH) || (defined(HAVE_DECL_SCHED_BATCH) && HAVE_DECL_SCHED_BATCH)
 XLAT(SCHED_BATCH),
#endif
#if defined(SCHED_ISO) || (defined(HAVE_DECL_SCHED_ISO) && HAVE_DECL_SCHED_ISO)
 XLAT(SCHED_ISO),
#endif
#if defined(SCHED_IDLE) || (defined(HAVE_DECL_SCHED_IDLE) && HAVE_DECL_SCHED_IDLE)
 XLAT(SCHED_IDLE),
#endif
#if defined(SCHED_DEADLINE) || (defined(HAVE_DECL_SCHED_DEADLINE) && HAVE_DECL_SCHED_DEADLINE)
 XLAT(SCHED_DEADLINE),
#endif
 XLAT_END
};
