The structures match those in LTTng-tools to support named metadata in general and CTF enumerations in particular.
Signed-off-by: Geneviève Bastien <[email protected]> --- include/lttng/ust-ctl.h | 36 +++++++++++++++++++++++++++++++++++- include/lttng/ust-events.h | 20 +++++++++++++++++++- 2 files changed, 54 insertions(+), 2 deletions(-) diff --git a/include/lttng/ust-ctl.h b/include/lttng/ust-ctl.h index 40e831e..29c89fe 100644 --- a/include/lttng/ust-ctl.h +++ b/include/lttng/ust-ctl.h @@ -295,13 +295,23 @@ struct ustctl_float_type { char padding[USTCTL_UST_FLOAT_TYPE_PADDING]; } LTTNG_PACKED; -#define USTCTL_UST_BASIC_TYPE_PADDING 296 +#define USTCTL_UST_ENUM_ENTRY_PADDING 296 +struct ustctl_enum_entry { + unsigned long long start, end; /* start and end are inclusive */ + char string[LTTNG_UST_SYM_NAME_LEN]; + char padding[USTCTL_UST_ENUM_ENTRY_PADDING]; +}; + +#define USTCTL_UST_BASIC_TYPE_PADDING 40 union _ustctl_basic_type { struct ustctl_integer_type integer; struct { enum ustctl_string_encodings encoding; } string; struct ustctl_float_type _float; + struct { + char name[LTTNG_UST_SYM_NAME_LEN]; + } enumeration; char padding[USTCTL_UST_BASIC_TYPE_PADDING]; } LTTNG_PACKED; @@ -329,6 +339,30 @@ struct ustctl_type { } u; } LTTNG_PACKED; +#define USTCTL_UST_ENUM_TYPE_PADDING 296 +struct ustctl_enum { + char name[LTTNG_UST_SYM_NAME_LEN]; + struct ustctl_integer_type container_type; + struct ustctl_enum_entry *entries; + unsigned int len; + char padding[USTCTL_UST_ENUM_TYPE_PADDING]; +} LTTNG_PACKED; + +/* CTF Metadata types for named metadata described outside event descriptions */ +enum ustctl_metadata_types { + ustctl_mtype_enum, + NR_USTCTL_METADATA_TYPES, +}; + +#define USTCTL_UST_NAMED_METADATA_PADDING 640 +struct ustctl_named_metadata { + enum ustctl_metadata_types mtype; + union { + struct ustctl_enum ctf_enum; + char padding[USTCTL_UST_NAMED_METADATA_PADDING]; + } u; +}; + #define USTCTL_UST_FIELD_PADDING 28 struct ustctl_field { char name[LTTNG_UST_SYM_NAME_LEN]; diff --git a/include/lttng/ust-events.h b/include/lttng/ust-events.h index d93c912..260b221 100644 --- a/include/lttng/ust-events.h +++ b/include/lttng/ust-events.h @@ -89,6 +89,12 @@ enum lttng_string_encodings { NR_STRING_ENCODINGS, }; +/* CTF Metadata types for named metadata described outside event descriptions */ +enum lttng_metadata_types { + mtype_enum, + NR_METADATA_TYPES, +}; + #define LTTNG_UST_ENUM_ENTRY_PADDING 16 struct lttng_enum_entry { unsigned long long start, end; /* start and end are inclusive */ @@ -204,12 +210,22 @@ struct lttng_type { #define LTTNG_UST_ENUM_TYPE_PADDING 24 struct lttng_enum { const char *name; - struct lttng_type container_type; + struct lttng_integer_type container_type; const struct lttng_enum_entry *entries; unsigned int len; char padding[LTTNG_UST_ENUM_TYPE_PADDING]; }; +#define LTTNG_UST_NAMED_METADATA_PADDING 60 +struct lttng_named_metadata { + enum lttng_metadata_types mtype; + unsigned int nowrite; /* inherited from the field using it */ + union { + const struct lttng_enum *ctf_enum; + char padding[LTTNG_UST_NAMED_METADATA_PADDING]; + } u; +}; + /* * Event field description * @@ -267,6 +283,8 @@ struct lttng_event_desc { union { struct { const char **model_emf_uri; + unsigned int nr_metadata; + const struct lttng_named_metadata *named_metadata; } ext; char padding[LTTNG_UST_EVENT_DESC_PADDING]; } u; -- 1.8.5.3 _______________________________________________ lttng-dev mailing list [email protected] http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
