/* Generated by ./xlat/gen.sh from ./xlat/dm_flags.in; do not edit. */
#if !(defined(DM_READONLY_FLAG) || (defined(HAVE_DECL_DM_READONLY_FLAG) && HAVE_DECL_DM_READONLY_FLAG))
# define DM_READONLY_FLAG (1 << 0)
#endif
#if !(defined(DM_SUSPEND_FLAG) || (defined(HAVE_DECL_DM_SUSPEND_FLAG) && HAVE_DECL_DM_SUSPEND_FLAG))
# define DM_SUSPEND_FLAG (1 << 1)
#endif
#if !(defined(DM_EXISTS_FLAG) || (defined(HAVE_DECL_DM_EXISTS_FLAG) && HAVE_DECL_DM_EXISTS_FLAG))
# define DM_EXISTS_FLAG (1 << 2)
#endif
#if !(defined(DM_PERSISTENT_DEV_FLAG) || (defined(HAVE_DECL_DM_PERSISTENT_DEV_FLAG) && HAVE_DECL_DM_PERSISTENT_DEV_FLAG))
# define DM_PERSISTENT_DEV_FLAG (1 << 3)
#endif
#if !(defined(DM_STATUS_TABLE_FLAG) || (defined(HAVE_DECL_DM_STATUS_TABLE_FLAG) && HAVE_DECL_DM_STATUS_TABLE_FLAG))
# define DM_STATUS_TABLE_FLAG (1 << 4)
#endif
#if !(defined(DM_ACTIVE_PRESENT_FLAG) || (defined(HAVE_DECL_DM_ACTIVE_PRESENT_FLAG) && HAVE_DECL_DM_ACTIVE_PRESENT_FLAG))
# define DM_ACTIVE_PRESENT_FLAG (1 << 5)
#endif
#if !(defined(DM_INACTIVE_PRESENT_FLAG) || (defined(HAVE_DECL_DM_INACTIVE_PRESENT_FLAG) && HAVE_DECL_DM_INACTIVE_PRESENT_FLAG))
# define DM_INACTIVE_PRESENT_FLAG (1 << 6)
#endif
#if !(defined(DM_BUFFER_FULL_FLAG) || (defined(HAVE_DECL_DM_BUFFER_FULL_FLAG) && HAVE_DECL_DM_BUFFER_FULL_FLAG))
# define DM_BUFFER_FULL_FLAG (1 << 8)
#endif
#if !(defined(DM_SKIP_BDGET_FLAG) || (defined(HAVE_DECL_DM_SKIP_BDGET_FLAG) && HAVE_DECL_DM_SKIP_BDGET_FLAG))
# define DM_SKIP_BDGET_FLAG (1 << 9)
#endif
#if !(defined(DM_SKIP_LOCKFS_FLAG) || (defined(HAVE_DECL_DM_SKIP_LOCKFS_FLAG) && HAVE_DECL_DM_SKIP_LOCKFS_FLAG))
# define DM_SKIP_LOCKFS_FLAG (1 << 10)
#endif
#if !(defined(DM_NOFLUSH_FLAG) || (defined(HAVE_DECL_DM_NOFLUSH_FLAG) && HAVE_DECL_DM_NOFLUSH_FLAG))
# define DM_NOFLUSH_FLAG (1 << 11)
#endif
#if !(defined(DM_QUERY_INACTIVE_TABLE_FLAG) || (defined(HAVE_DECL_DM_QUERY_INACTIVE_TABLE_FLAG) && HAVE_DECL_DM_QUERY_INACTIVE_TABLE_FLAG))
# define DM_QUERY_INACTIVE_TABLE_FLAG (1 << 12)
#endif
#if !(defined(DM_UEVENT_GENERATED_FLAG) || (defined(HAVE_DECL_DM_UEVENT_GENERATED_FLAG) && HAVE_DECL_DM_UEVENT_GENERATED_FLAG))
# define DM_UEVENT_GENERATED_FLAG (1 << 13)
#endif
#if !(defined(DM_UUID_FLAG) || (defined(HAVE_DECL_DM_UUID_FLAG) && HAVE_DECL_DM_UUID_FLAG))
# define DM_UUID_FLAG (1 << 14)
#endif
#if !(defined(DM_SECURE_DATA_FLAG) || (defined(HAVE_DECL_DM_SECURE_DATA_FLAG) && HAVE_DECL_DM_SECURE_DATA_FLAG))
# define DM_SECURE_DATA_FLAG (1 << 15)
#endif
#if !(defined(DM_DATA_OUT_FLAG) || (defined(HAVE_DECL_DM_DATA_OUT_FLAG) && HAVE_DECL_DM_DATA_OUT_FLAG))
# define DM_DATA_OUT_FLAG (1 << 16)
#endif
#if !(defined(DM_DEFERRED_REMOVE) || (defined(HAVE_DECL_DM_DEFERRED_REMOVE) && HAVE_DECL_DM_DEFERRED_REMOVE))
# define DM_DEFERRED_REMOVE (1 << 17)
#endif
#if !(defined(DM_INTERNAL_SUSPEND_FLAG) || (defined(HAVE_DECL_DM_INTERNAL_SUSPEND_FLAG) && HAVE_DECL_DM_INTERNAL_SUSPEND_FLAG))
# define DM_INTERNAL_SUSPEND_FLAG (1 << 18)
#endif

#ifdef IN_MPERS

# error static const struct xlat dm_flags in mpers mode

#else

static
const struct xlat dm_flags[] = {
 XLAT(DM_READONLY_FLAG),
 XLAT(DM_SUSPEND_FLAG),

 XLAT(DM_EXISTS_FLAG),
 XLAT(DM_PERSISTENT_DEV_FLAG),
 XLAT(DM_STATUS_TABLE_FLAG),
 XLAT(DM_ACTIVE_PRESENT_FLAG),
 XLAT(DM_INACTIVE_PRESENT_FLAG),
 XLAT(DM_BUFFER_FULL_FLAG),
 XLAT(DM_SKIP_BDGET_FLAG),
 XLAT(DM_SKIP_LOCKFS_FLAG),
 XLAT(DM_NOFLUSH_FLAG),
 XLAT(DM_QUERY_INACTIVE_TABLE_FLAG),
 XLAT(DM_UEVENT_GENERATED_FLAG),
 XLAT(DM_UUID_FLAG),
 XLAT(DM_SECURE_DATA_FLAG),
 XLAT(DM_DATA_OUT_FLAG),
 XLAT(DM_DEFERRED_REMOVE),
 XLAT(DM_INTERNAL_SUSPEND_FLAG),
 XLAT_END
};

#endif /* !IN_MPERS */
