+/*
+ * The alignment field in structure, array, and sequence types is a
+ * minimum alignment requirement. The actual alignment of a type may be
+ * larger than this explicit alignment value if its nested types have a
+ * larger alignment.
+ */
+
+struct lttng_ust_type_array {
+ struct lttng_ust_type_common parent;
+ uint32_t struct_size;
+ const struct lttng_ust_type_common *elem_type;
+ unsigned int length; /* Num. elems. */
+ unsigned int alignment; /* Minimum alignment for this type. */
+ enum lttng_ust_string_encoding encoding;
+};
+
+struct lttng_ust_type_sequence {
+ struct lttng_ust_type_common parent;
+ uint32_t struct_size;
+ const char *length_name; /* Length field name. If NULL, use previous field. */
+ const struct lttng_ust_type_common *elem_type;
+ unsigned int alignment; /* Minimum alignment before elements. */
+ enum lttng_ust_string_encoding encoding;
+};
+
+struct lttng_ust_type_struct {
+ struct lttng_ust_type_common parent;
+ uint32_t struct_size;
+ unsigned int nr_fields;
+ const struct lttng_ust_event_field * const *fields; /* Array of pointers to fields. */
+ unsigned int alignment; /* Minimum alignment for this type. */
+};
+
+/*
+ * Enumeration description
+ *
+ * IMPORTANT: this structure is part of the ABI between the probe and
+ * UST. Fields need to be only added at the end, never reordered, never
+ * removed.
+ *
+ * The field @struct_size should be used to determine the size of the
+ * structure. It should be queried before using additional fields added
+ * at the end of the structure.
+ */
+
+struct lttng_ust_enum_desc {
+ uint32_t struct_size;
+