/* 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
};
