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

static const struct xlat adjtimex_modes[] = {
 XLAT(0),
#if defined(ADJ_OFFSET) || (defined(HAVE_DECL_ADJ_OFFSET) && HAVE_DECL_ADJ_OFFSET)
 XLAT(ADJ_OFFSET),
#endif
#if defined(ADJ_FREQUENCY) || (defined(HAVE_DECL_ADJ_FREQUENCY) && HAVE_DECL_ADJ_FREQUENCY)
 XLAT(ADJ_FREQUENCY),
#endif
#if defined(ADJ_MAXERROR) || (defined(HAVE_DECL_ADJ_MAXERROR) && HAVE_DECL_ADJ_MAXERROR)
 XLAT(ADJ_MAXERROR),
#endif
#if defined(ADJ_ESTERROR) || (defined(HAVE_DECL_ADJ_ESTERROR) && HAVE_DECL_ADJ_ESTERROR)
 XLAT(ADJ_ESTERROR),
#endif
#if defined(ADJ_STATUS) || (defined(HAVE_DECL_ADJ_STATUS) && HAVE_DECL_ADJ_STATUS)
 XLAT(ADJ_STATUS),
#endif
#if defined(ADJ_TIMECONST) || (defined(HAVE_DECL_ADJ_TIMECONST) && HAVE_DECL_ADJ_TIMECONST)
 XLAT(ADJ_TIMECONST),
#endif
#if defined(ADJ_TAI) || (defined(HAVE_DECL_ADJ_TAI) && HAVE_DECL_ADJ_TAI)
 XLAT(ADJ_TAI),
#endif
#if defined(ADJ_SETOFFSET) || (defined(HAVE_DECL_ADJ_SETOFFSET) && HAVE_DECL_ADJ_SETOFFSET)
 XLAT(ADJ_SETOFFSET),
#endif
#if defined(ADJ_MICRO) || (defined(HAVE_DECL_ADJ_MICRO) && HAVE_DECL_ADJ_MICRO)
 XLAT(ADJ_MICRO),
#endif
#if defined(ADJ_NANO) || (defined(HAVE_DECL_ADJ_NANO) && HAVE_DECL_ADJ_NANO)
 XLAT(ADJ_NANO),
#endif
#if defined(ADJ_TICK) || (defined(HAVE_DECL_ADJ_TICK) && HAVE_DECL_ADJ_TICK)
 XLAT(ADJ_TICK),
#endif
#if defined(ADJ_OFFSET_SINGLESHOT) || (defined(HAVE_DECL_ADJ_OFFSET_SINGLESHOT) && HAVE_DECL_ADJ_OFFSET_SINGLESHOT)
 XLAT(ADJ_OFFSET_SINGLESHOT),
#endif
#if defined(ADJ_OFFSET_SS_READ) || (defined(HAVE_DECL_ADJ_OFFSET_SS_READ) && HAVE_DECL_ADJ_OFFSET_SS_READ)
 XLAT(ADJ_OFFSET_SS_READ),
#endif
 XLAT_END
};
