From mboxrd@z Thu Jan 1 00:00:00 1970 From: gbastien+lttng@versatic.net (=?UTF-8?q?Genevi=C3=A8ve=20Bastien?=) Date: Wed, 26 Mar 2014 10:47:08 -0400 Subject: [lttng-dev] [RFC Patch Ust 1/5] Update data structures to support CTF global structures In-Reply-To: <1395845232-17669-1-git-send-email-gbastien+lttng@versatic.net> References: <1395845232-17669-1-git-send-email-gbastien+lttng@versatic.net> Message-ID: <1395845232-17669-2-git-send-email-gbastien+lttng@versatic.net> The structures match those in LTTng-tools to support global structures. The struct lttng_structure contains the global types required by the structure, but not ustctl_structure because global types will be flattened in the event description when serializing. Signed-off-by: Genevi?ve Bastien --- include/lttng/ust-ctl.h | 14 ++++++++++++++ include/lttng/ust-events.h | 17 +++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/include/lttng/ust-ctl.h b/include/lttng/ust-ctl.h index ba3a271..708501d 100644 --- a/include/lttng/ust-ctl.h +++ b/include/lttng/ust-ctl.h @@ -265,6 +265,7 @@ enum ustctl_abstract_types { ustctl_atype_sequence, ustctl_atype_string, ustctl_atype_float, + ustctl_atype_structure, NR_USTCTL_ABSTRACT_TYPES, }; @@ -335,6 +336,9 @@ struct ustctl_type { struct ustctl_basic_type length_type; struct ustctl_basic_type elem_type; } sequence; + struct { + char name[LTTNG_UST_SYM_NAME_LEN]; + } structure; char padding[USTCTL_UST_TYPE_PADDING]; } u; } LTTNG_PACKED; @@ -348,9 +352,18 @@ struct ustctl_enum { char padding[USTCTL_UST_ENUM_TYPE_PADDING]; } LTTNG_PACKED; +#define USTCTL_UST_STRUCT_TYPE_PADDING 368 +struct ustctl_structure { + char name[LTTNG_UST_SYM_NAME_LEN]; + size_t nr_fields; + struct ustctl_field *fields; + char padding[USTCTL_UST_STRUCT_TYPE_PADDING]; +}; + /* CTF categories for global types declared outside event descriptions */ enum ustctl_global_type_categories { ustctl_mtype_enum, + ustctl_mtype_structure, NR_USTCTL_GLOBAL_TYPES, }; @@ -359,6 +372,7 @@ struct ustctl_global_type_decl { uint32_t mtype; union { struct ustctl_enum ctf_enum; + struct ustctl_structure ctf_structure; char padding[USTCTL_UST_GLOBAL_TYPE_DECL_PADDING]; } u; } LTTNG_PACKED; diff --git a/include/lttng/ust-events.h b/include/lttng/ust-events.h index 6f11e84..89155ae 100644 --- a/include/lttng/ust-events.h +++ b/include/lttng/ust-events.h @@ -82,6 +82,7 @@ enum lttng_abstract_types { atype_sequence, atype_string, atype_float, + atype_structure, NR_ABSTRACT_TYPES, }; @@ -96,6 +97,7 @@ enum lttng_string_encodings { /* CTF categories for global types declared outside event descriptions */ enum lttng_global_type_categories { mtype_enum, + mtype_structure, NR_GLOBAL_TYPES, }; @@ -207,6 +209,9 @@ struct lttng_type { struct lttng_basic_type length_type; struct lttng_basic_type elem_type; } sequence; + struct { + const char *name; + } structure; char padding[LTTNG_UST_TYPE_PADDING]; } u; }; @@ -220,12 +225,24 @@ struct lttng_enum { char padding[LTTNG_UST_ENUM_TYPE_PADDING]; }; +#define LTTNG_UST_STRUCT_TYPE_PADDING 20 +struct lttng_structure { + const char *name; + size_t nr_fields; + const struct lttng_event_field *fields; + /* Global types required by this structure. */ + unsigned int nr_global_type_decl; + const struct lttng_global_type_decl *global_type_decl; + char padding[LTTNG_UST_STRUCT_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; + const struct lttng_structure *ctf_structure; char padding[LTTNG_UST_GLOBAL_TYPES_PADDING]; } u; }; -- 1.9.1