The structures match those in LTTng-tools to support global type declarations in general and CTF enumerations in particular.
Note: This patch uses the lttng_enum structure in ust-events.h and modifies the container_type field. This structure was not used and has never been used as far as we know. 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..783492b 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 categories for global types declared outside event descriptions */ +enum ustctl_global_type_categories { + ustctl_mtype_enum, + NR_USTCTL_GLOBAL_TYPES, +}; + +#define USTCTL_UST_GLOBAL_TYPES_PADDING 640 +struct ustctl_global_type_decl { + uint32_t mtype; + union { + struct ustctl_enum ctf_enum; + char padding[USTCTL_UST_GLOBAL_TYPES_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..a683de8 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 categories for global types declared outside event descriptions */ +enum lttng_global_type_categories { + mtype_enum, + NR_GLOBAL_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_GLOBAL_TYPES_PADDING 60 +struct lttng_global_type_decl { + enum lttng_global_type_categories mtype; + unsigned int nowrite; /* inherited from the field using it */ + union { + const struct lttng_enum *ctf_enum; + char padding[LTTNG_UST_GLOBAL_TYPES_PADDING]; + } u; +}; + /* * Event field description * @@ -267,6 +283,8 @@ struct lttng_event_desc { union { struct { const char **model_emf_uri; + unsigned int nr_global_type_decl; + const struct lttng_global_type_decl *global_type_decl; } ext; char padding[LTTNG_UST_EVENT_DESC_PADDING]; } u; -- 1.8.5.4 _______________________________________________ lttng-dev mailing list [email protected] http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
