Thanks for reviewing all those patches! I'll make the changes soon when
the naming of this concept is settled (see Stefan's email). "Global
types" sounds good.
Only thing where answer is needed inline below.
On 14-01-30 06:06 PM, Mathieu Desnoyers wrote:
----- Original Message -----
From: "Geneviève Bastien" <[email protected]>
To: [email protected]
Sent: Friday, January 24, 2014 3:04:39 PM
Subject: [lttng-dev] [Patch LTTng-ust 1/7] Add or update data structures to
support CTF named metadata
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;
OK to use the enumeration, but define this mtype field as a fixed-size
field (e.g. int32_t). (yes, I did the mistake to use enums in the ABI
in the past). Currently, compilers use 32-bit int typically, but they
have some freedom in the choice of the backing type.
+ 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;
doing this change assumes that lttng_enum was never used in lttng-ust, is
that true ?
Are you asking me or the list? I haven't seen any reference to it and
you told me on IRC that [you thought] it hadn't been used anywhere ever.
But I don't know about the past of UST... For more security, maybe I
should just add a new field at the end of this struct?
Thanks,
Geneviève
Thanks,
Mathieu
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
_______________________________________________
lttng-dev mailing list
[email protected]
http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev